--- name: localize permissions: {} on: push: branches: - master paths: - '.github/workflows/localize.yml' - 'src/**' - 'locale/sunshine.po' workflow_dispatch: env: FILE: ./locale/sunshine.po PYTHON_VERSION: '3.14' jobs: localize: name: Update Localization permissions: contents: read runs-on: ubuntu-latest steps: - name: Checkout uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2 - name: Install Python uses: actions/setup-python@a309ff8b426b58ec0e2a45f0f869d46889d02405 # v6.2.0 with: python-version: ${{ env.PYTHON_VERSION }} - name: Setup uv uses: astral-sh/setup-uv@08807647e7069bb48b6ef5acd8ec9567f424441b # v8.1.0 with: enable-cache: true - name: Sync Python tools run: | uv sync --locked --only-group locale \ --python "${PYTHON_VERSION}" \ --no-python-downloads \ --no-install-project - name: Set up xgettext run: | sudo apt-get update -y && \ sudo apt-get --reinstall install -y \ gettext - name: Update Strings run: | new_file=true # first, try to remove existing file as xgettext does not remove unused translations if [ -f "${FILE}" ]; then rm "${FILE}" new_file=false fi echo "NEW_FILE=${new_file}" >> "${GITHUB_ENV}" # extract the new strings uv run --locked --no-sync 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, replacing `\t` with ` ` OUTPUT=$(git diff --numstat locale/sunshine.po | sed -e "s#\t# #g") echo "GIT_DIFF=${OUTPUT}" >> "${GITHUB_ENV}" - name: git reset # only run if a single line changed (date/time) and file already existed if: >- env.GIT_DIFF == '1 1 locale/sunshine.po' && env.NEW_FILE == 'false' run: | git reset --hard - name: Get current date id: date run: echo "date=$(date +'%Y-%m-%d')" >> "${GITHUB_OUTPUT}" - name: Create/Update Pull Request uses: peter-evans/create-pull-request@5f6978faf089d4d20b00c7766989d076bb2fc7f1 # v8.1.1 with: add-paths: | locale/*.po token: ${{ secrets.GH_BOT_TOKEN }} # must trigger PR tests commit-message: "chore(l10n): new babel updates" branch: localize/update delete-branch: true base: master title: "chore(l10n): new babel updates" body: | Update report - Updated ${{ steps.date.outputs.date }} - Auto-generated by [create-pull-request][1] [1]: https://github.com/peter-evans/create-pull-request labels: | babel l10n