--- name: localize on: push: branches: [nightly] paths: # prevents workflow from running unless these files change - '.github/workflows/localize.yml' - 'src/**' - 'locale/sunshine.po' workflow_dispatch: env: file: ./locale/sunshine.po jobs: localize: name: Update Localization runs-on: ubuntu-latest steps: - name: Checkout uses: actions/checkout@v3 - name: Install Python 3.9 uses: actions/setup-python@v4 # https://github.com/actions/setup-python with: python-version: '3.9' - name: Set up Python 3.9 Dependencies run: | cd ./scripts python -m pip install --upgrade pip setuptools python -m pip install -r requirements.txt - name: Set up xgettext run: | sudo apt-get update -y && \ sudo apt-get --reinstall install -y \ gettext - name: Update Strings run: | # first, try to remove existing file as xgettext does not remove unused translations if [ -f "${{ env.file }}" ]; then rm ${{ env.file }} echo "new_file=false" >> $GITHUB_ENV else echo "new_file=true" >> $GITHUB_ENV fi # extract the new strings python ./scripts/_locale.py --extract - name: git diff if: ${{ env.new_file == 'false' }} run: | # disable the pager git config --global pager.diff false # print the git diff git diff locale/sunshine.po # set the variable with minimal output OUTPUT=$(git diff --numstat locale/sunshine.po) echo "git_diff=${OUTPUT}" >> $GITHUB_ENV - name: git reset # only run if a single line changed (date/time) and file already existed # \t in next line is a tab character if: ${{ env.git_diff == '1\t1\tlocale/sunshine.po' && env.new_file == 'false' }} run: | git reset --hard - name: Create/Update Pull Request uses: peter-evans/create-pull-request@v4 with: add-paths: | locale/*.po token: ${{ secrets.GH_BOT_TOKEN }} # must trigger PR tests commit-message: New localization template branch: localize/update delete-branch: true base: nightly title: New Babel Updates body: | Update report - Updated with *today's* date - Auto-generated by [create-pull-request][1] [1]: https://github.com/peter-evans/create-pull-request labels: | babel l10n