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