From a73c14f31e5d4c3760800597bac1cac975dfc23f Mon Sep 17 00:00:00 2001 From: Renaud Chaput Date: Mon, 10 Jul 2023 12:44:09 +0200 Subject: [PATCH] Add Github Actions for Crowdin translations management - an action when merging on `main` which uploads new sources to Crowdin - an action running once a day, to download translations from Crowdin and create/update a PR with them --- .github/workflows/crowdin-download.yml | 47 ++++++++++++++++++++++++++ .github/workflows/crowdin-upload.yml | 35 +++++++++++++++++++ crowdin.yml | 5 +++ 3 files changed, 87 insertions(+) create mode 100644 .github/workflows/crowdin-download.yml create mode 100644 .github/workflows/crowdin-upload.yml diff --git a/.github/workflows/crowdin-download.yml b/.github/workflows/crowdin-download.yml new file mode 100644 index 0000000000..4f2d6e2d39 --- /dev/null +++ b/.github/workflows/crowdin-download.yml @@ -0,0 +1,47 @@ +name: Crowdin / Download translations +on: + schedule: + - cron: '17 4 * * *' # Every day + workflow_dispatch: + +permissions: + contents: write + pull-requests: write + +jobs: + download-translations: + runs-on: ubuntu-latest + + steps: + - name: Checkout + uses: actions/checkout@v3 + + - name: Increase Git http.postBuffer + # This is needed due to a bug in Ubuntu's cURL version? + # See https://github.com/orgs/community/discussions/55820 + run: | + git config --global http.version HTTP/1.1 + git config --global http.postBuffer 157286400 + + - name: crowdin action + uses: crowdin/github-action@v1 + with: + upload_sources: false + upload_translations: false + download_translations: true + crowdin_branch_name: main + localization_branch_name: i18n/crowdin/translations + create_pull_request: true + pull_request_title: 'New Crowdin Translations (automated)' + pull_request_body: | + New Crowdin translations by [Crowdin GH Action](https://github.com/crowdin/github-action) + + See `.github/workflows/crowdin-download.yml + + This PR will be updated every day with new translations.' + pull_request_labels: 'i18n' + + env: + CROWDIN_PROJECT_ID: ${{ vars.CROWDIN_PROJECT_ID }} + CROWDIN_PERSONAL_TOKEN: ${{ secrets.CROWDIN_PERSONAL_TOKEN }} + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} diff --git a/.github/workflows/crowdin-upload.yml b/.github/workflows/crowdin-upload.yml new file mode 100644 index 0000000000..8bc9f51934 --- /dev/null +++ b/.github/workflows/crowdin-upload.yml @@ -0,0 +1,35 @@ +name: Crowdin / Upload translations + +on: + push: + branches: + - main + paths: + - crowdin.yml + - app/javascript/mastodon/locales/en.json + - config/locales/en.yml + - config/locales/simple_form.en.yml + - config/locales/activerecord.en.yml + - config/locales/devise.en.yml + - config/locales/doorkeeper.en.yml + - .github/workflows/crowdin-upload.yml + +jobs: + upload-translations: + runs-on: ubuntu-latest + + steps: + - name: Checkout + uses: actions/checkout@v3 + + - name: crowdin action + uses: crowdin/github-action@v1 + with: + upload_sources: true + upload_translations: false + download_translations: false + crowdin_branch_name: main + + env: + CROWDIN_PROJECT_ID: ${{ vars.CROWDIN_PROJECT_ID }} + CROWDIN_PERSONAL_TOKEN: ${{ secrets.CROWDIN_PERSONAL_TOKEN }} diff --git a/crowdin.yml b/crowdin.yml index 5cd4a744aa..d05b0e69f5 100644 --- a/crowdin.yml +++ b/crowdin.yml @@ -1,5 +1,10 @@ +# This is needed for the Github Action +project_id_env: CROWDIN_PROJECT_ID +api_token_env: CROWDIN_PERSONAL_TOKEN + skip_untranslated_strings: 1 commit_message: '[ci skip]' +preserve_hierarchy: true files: - source: /app/javascript/mastodon/locales/en.json translation: /app/javascript/mastodon/locales/%two_letters_code%.json