diff --git a/.ci/update_translations.sh b/.ci/update_translation_source_strings.sh similarity index 100% rename from .ci/update_translations.sh rename to .ci/update_translation_source_strings.sh diff --git a/.ci/update_translations_template.md b/.ci/update_translation_source_strings_template.md similarity index 57% rename from .ci/update_translations_template.md rename to .ci/update_translation_source_strings_template.md index 9123426c..ce0b0e7b 100644 --- a/.ci/update_translations_template.md +++ b/.ci/update_translation_source_strings_template.md @@ -1,4 +1,4 @@ -Updated language source strings: +Updated source strings for translations: - {{ .cockatrice_output }} (Cockatrice) - {{ .oracle_output }} (Oracle) @@ -7,5 +7,7 @@ Updated language source strings: Last changes are based on commit {{ .commit }}. --- -*This PR is automatically generated and updated by the workflow at `.github/workflows/translations.yml`.*
-*After merging, all changes to the source language are available for translation at [Transifex](https://app.transifex.com/cockatrice/cockatrice/) shortly.* +*This PR is automatically generated and updated by the workflow at `.github/workflows/translations-push.yml`.*
+*After merging, all changes to the source language are available for translation at [Transifex][1] shortly.* + +[1]: https://app.transifex.com/cockatrice/cockatrice/ diff --git a/.github/workflows/desktop-build.yml b/.github/workflows/desktop-build.yml index d23320cc..a297ba25 100644 --- a/.github/workflows/desktop-build.yml +++ b/.github/workflows/desktop-build.yml @@ -8,7 +8,7 @@ on: - '**.md' - 'webclient/**' - '.github/workflows/web-*.yml' - - '.github/workflows/translations.yml' + - '.github/workflows/translations-*.yml' tags: - '*' pull_request: diff --git a/.github/workflows/desktop-lint.yml b/.github/workflows/desktop-lint.yml index ea1fdc79..4ebfd9b7 100644 --- a/.github/workflows/desktop-lint.yml +++ b/.github/workflows/desktop-lint.yml @@ -6,7 +6,7 @@ on: - '**.md' - 'webclient/**' - '.github/workflows/web-*.yml' - - '.github/workflows/translations.yml' + - '.github/workflows/translations-*.yml' jobs: format: diff --git a/.github/workflows/translations-pull.yml b/.github/workflows/translations-pull.yml new file mode 100644 index 00000000..a99cde2c --- /dev/null +++ b/.github/workflows/translations-pull.yml @@ -0,0 +1,73 @@ +name: Update Translations + +on: + workflow_dispatch: + schedule: + # runs in the middle of each month starting a quarter (UTC) = two weeks after new strings are built + - cron: '0 0 15 1,4,7,10 *' + pull_request: + paths: + - '.github/workflows/translations-pull.yml' + +jobs: + translations: + # Do not run the scheduled workflow on forks + if: github.event_name != 'schedule' || github.repository_owner == 'Cockatrice' + + name: Pull languages + runs-on: ubuntu-latest + + steps: + - name: Checkout repo + uses: actions/checkout@v4 + + - name: Pull translated strings from Transifex + uses: transifex/cli-action@v2 + with: + # used config file: https://github.com/Cockatrice/Cockatrice/blob/master/.tx/config + # https://github.com/transifex/cli#pulling-files-from-transifex + token: ${{ secrets.TX_TOKEN }} + args: pull --all + + - name: Create pull request + if: github.event_name != 'pull_request' + id: create_pr + uses: peter-evans/create-pull-request@v5 + with: + add-paths: | + cockatrice/translations/*.ts + oracle/translations/*.ts + webclient/public/locales/*/translation.json + commit-message: Update translation files + # author is the owner of the commit + author: github-actions + branch: ci-update_translations + delete-branch: true + title: '[Translations] Update translations' + body: | + `pull -all` strings from [Transifex][1] + +
+ + --- + *This PR is automatically generated and updated by the workflow at `.github/workflows/translations-pull.yml`.*
+ *After merging, all new languages and translations are available in the next build.* + + [1]: https://app.transifex.com/cockatrice/cockatrice/ + labels: | + CI + Translation + draft: false + + - name: PR Status + if: github.event_name != 'pull_request' + shell: bash + env: + STATUS: ${{ steps.create_pr.outputs.pull-request-operation }} + run: | + if [[ "$STATUS" == "" ]]; then + echo "PR #${{ steps.create_pr.outputs.pull-request-number }} unchanged!" + else + echo "PR #${{ steps.create_pr.outputs.pull-request-number }} $STATUS!" + fi + echo "URL: ${{ steps.create_pr.outputs.pull-request-url }}" diff --git a/.github/workflows/translations.yml b/.github/workflows/translations-push.yml similarity index 86% rename from .github/workflows/translations.yml rename to .github/workflows/translations-push.yml index 7b87fe61..56cb28a0 100644 --- a/.github/workflows/translations.yml +++ b/.github/workflows/translations-push.yml @@ -3,18 +3,18 @@ name: Update Translation Source on: workflow_dispatch: schedule: - # runs at the start of each month (UTC) - - cron: '0 0 1 * *' + # runs at the start of each quarter (UTC) + - cron: '0 0 1 1,4,7,10 *' pull_request: paths: - - '.github/workflows/translations.yml' + - '.github/workflows/translations-push.yml' jobs: translations: # Do not run the scheduled workflow on forks if: github.event_name != 'schedule' || github.repository_owner == 'Cockatrice' - name: Update translation source + name: Push strings runs-on: ubuntu-latest steps: @@ -33,7 +33,7 @@ jobs: env: FILE: 'cockatrice/cockatrice_en@source.ts' DIRS: 'cockatrice/src common' - run: .ci/update_translations.sh + run: .ci/update_translation_source_strings.sh - name: Update Oracle translation source id: oracle @@ -41,13 +41,13 @@ jobs: env: FILE: 'oracle/oracle_en@source.ts' DIRS: 'oracle/src' - run: .ci/update_translations.sh + run: .ci/update_translation_source_strings.sh - name: Render template id: template uses: chuhlomin/render-template@v1 with: - template: .ci/update_translations_template.md + template: .ci/update_translation_source_strings_template.md vars: | cockatrice_output: ${{ steps.cockatrice.outputs.output }} oracle_output: ${{ steps.oracle.outputs.output }} @@ -64,7 +64,7 @@ jobs: commit-message: Update translation source strings # author is the owner of the commit author: github-actions - branch: ci-update_translations + branch: ci-update_translation_source_strings delete-branch: true title: '[Translations] Update source strings' body: ${{ steps.template.outputs.result }} diff --git a/.tx/config b/.tx/config index 28e7f4b7..9bc5ce95 100644 --- a/.tx/config +++ b/.tx/config @@ -1,13 +1,26 @@ [main] -host = https://www.transifex.com +host = https://app.transifex.com -[cockatrice.cockatrice-translations-cockatrice-en-source-ts--master] +[o:cockatrice:p:cockatrice:r:cockatrice-cockatrice-en-source-ts--master] +resource_name = Cockatrice +source_lang = en +source_file = cockatrice/cockatrice_en@source.ts file_filter = cockatrice/translations/cockatrice_.ts -source_file = cockatrice/translations/cockatrice_en@source.ts -source_lang = en +type = QT +minimum_perc = 10 -[cockatrice.oracle-translations-oracle-en-source-ts--master] +[o:cockatrice:p:cockatrice:r:oracle-oracle-en-source-ts--master] +resource_name = Oracle +source_lang = en +source_file = oracle/oracle_en@source.ts file_filter = oracle/translations/oracle_.ts -source_file = oracle/translations/oracle_en@source.ts -source_lang = en +type = QT +minimum_perc = 10 +[o:cockatrice:p:cockatrice:r:webclient-src-i18n-default-json--master] +resource_name = Webclient +source_lang = en +source_file = webclient/src/i18n-default.json +file_filter = webclient/public/locales//translation.json +type = KEYVALUEJSON +minimum_perc = 10