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
pull/25869/head
Renaud Chaput 2023-07-10 12:44:09 +02:00
parent 99be47f8b9
commit a73c14f31e
No known key found for this signature in database
GPG Key ID: BCFC859D49B46990
3 changed files with 87 additions and 0 deletions

47
.github/workflows/crowdin-download.yml vendored Normal file
View File

@ -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 }}

35
.github/workflows/crowdin-upload.yml vendored Normal file
View File

@ -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 }}

View File

@ -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