From ce6cfc22efdfc62612d8564cf60e758382cce9d9 Mon Sep 17 00:00:00 2001 From: Manuel Raynaud Date: Wed, 15 Jan 2025 21:25:08 +0100 Subject: [PATCH] =?UTF-8?q?=F0=9F=8C=90(action)=20upload=20sources=20trans?= =?UTF-8?q?lation=20on=20crowdin?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Crowdin has released its own github action to automatize translation workflow. We want to use to upload sources when a PR is merged. --- .github/workflows/crowdin_upload.yml | 75 ++++++++++++++++++++++++++++ CHANGELOG.md | 5 +- crowdin/config.yml | 12 ++--- env.d/development/crowdin.dist | 2 +- 4 files changed, 86 insertions(+), 8 deletions(-) create mode 100644 .github/workflows/crowdin_upload.yml diff --git a/.github/workflows/crowdin_upload.yml b/.github/workflows/crowdin_upload.yml new file mode 100644 index 00000000..97d6d975 --- /dev/null +++ b/.github/workflows/crowdin_upload.yml @@ -0,0 +1,75 @@ +name: Update crowdin sources + +on: + workflow_dispatch: + push: + branches: + - main + +jobs: + synchronize-with-crowdin: + runs-on: ubuntu-latest + + steps: + - name: Checkout + uses: actions/checkout@v4 + # Backend i18n + - name: Install Python + uses: actions/setup-python@v3 + with: + python-version: "3.12.6" + - name: Upgrade pip and setuptools + run: pip install --upgrade pip setuptools + - name: Install development dependencies + run: pip install --user . + working-directory: src/backend + - name: Install gettext + run: | + sudo apt-get update + sudo apt-get install -y gettext pandoc + - name: generate pot files + working-directory: src/backend + run: | + DJANGO_CONFIGURATION=Build python manage.py compilemessages + DJANGO_CONFIGURATION=Build python manage.py makemessages -a --keep-pot + # frontend i18n + - name: Setup Node.js + uses: actions/setup-node@v4 + with: + node-version: "20.x" + - name: Restore the frontend cache + uses: actions/cache@v4 + id: front-node_modules + with: + path: "src/frontend/**/node_modules" + key: front-node_modules-${{ hashFiles('src/frontend/**/yarn.lock') }} + - name: Install dependencies + if: steps.front-node_modules.outputs.cache-hit != 'true' + run: cd src/frontend/ && yarn install --frozen-lockfile + - name: Cache install frontend + if: steps.front-node_modules.outputs.cache-hit != 'true' + uses: actions/cache@v4 + with: + path: "src/frontend/**/node_modules" + key: front-node_modules-${{ hashFiles('src/frontend/**/yarn.lock') }} + - name: generate source translation file + working-directory: src/frontend + run: yarn i18n:extract + # crowdin workflow + - name: crowdin action + uses: crowdin/github-action@v2 + with: + config: crowdin/config.yml + upload_sources: true + upload_translations: false + download_translations: false + create_pull_request: false + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + # A numeric ID, found at https://crowdin.com/project//tools/api + CROWDIN_PROJECT_ID: ${{ secrets.CROWDIN_PROJECT_ID }} + + # Visit https://crowdin.com/settings#api-key to create this token + CROWDIN_PERSONAL_TOKEN: ${{ secrets.CROWDIN_PERSONAL_TOKEN }} + + CROWDIN_BASE_PATH: "../src/" diff --git a/CHANGELOG.md b/CHANGELOG.md index cd95e5ee..5a8ae7b4 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -9,6 +9,10 @@ and this project adheres to ## [Unreleased] +## Added + +- github actions to managed Crowdin workflow + ## [2.0.1] - 2025-01-17 ## Fixed @@ -16,7 +20,6 @@ and this project adheres to -🐛(frontend) share modal is shown when you don't have the abilities #557 -🐛(frontend) title copy break app #564 - ## [2.0.0] - 2025-01-13 ## Added diff --git a/crowdin/config.yml b/crowdin/config.yml index 4f167ff6..724e321b 100644 --- a/crowdin/config.yml +++ b/crowdin/config.yml @@ -1,7 +1,7 @@ # # Your crowdin's credentials # -api_token_env: CROWDIN_API_TOKEN +api_token_env: CROWDIN_PERSONAL_TOKEN project_id_env: CROWDIN_PROJECT_ID base_path_env: CROWDIN_BASE_PATH @@ -15,11 +15,11 @@ preserve_hierarchy: true # Files configuration # files: [ - { - source : "/backend/locale/django.pot", - dest: "/backend-impress.pot", - translation : "/backend/locale/%locale_with_underscore%/LC_MESSAGES/django.po" - }, + { + source : "/backend/locale/django.pot", + dest: "/backend-impress.pot", + translation : "/backend/locale/%locale_with_underscore%/LC_MESSAGES/django.po" + }, { source: "/frontend/packages/i18n/locales/impress/translations-crowdin.json", dest: "/frontend-impress.json", diff --git a/env.d/development/crowdin.dist b/env.d/development/crowdin.dist index 1218e3b7..6c6a9d8a 100644 --- a/env.d/development/crowdin.dist +++ b/env.d/development/crowdin.dist @@ -1,3 +1,3 @@ -CROWDIN_API_TOKEN=Your-Api-Token +CROWDIN_PERSONAL_TOKEN=Your-Personal-Token CROWDIN_PROJECT_ID=Your-Project-Id CROWDIN_BASE_PATH=/app/src