~cytrogen/masto-fe

626a7b6a777e93ada5854642c5904247d8d3c18a — Renaud Chaput 2 years ago d184524
Add a Github Action to send translations to Crowdin for each merge in main (#25869)

3 files changed, 116 insertions(+), 0 deletions(-)

A .github/workflows/crowdin-download.yml
A .github/workflows/crowdin-upload.yml
M crowdin.yml
A .github/workflows/crowdin-download.yml => .github/workflows/crowdin-download.yml +76 -0
@@ 0,0 1,76 @@
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

      # Download the translation files from Crowdin
      - name: crowdin action
        uses: crowdin/github-action@v1
        with:
          upload_sources: false
          upload_translations: false
          download_translations: true
          crowdin_branch_name: main
          push_translations: false
          create_pull_request: false
        env:
          CROWDIN_PROJECT_ID: ${{ vars.CROWDIN_PROJECT_ID }}
          CROWDIN_PERSONAL_TOKEN: ${{ secrets.CROWDIN_PERSONAL_TOKEN }}

      # As the files are extracted from a Docker container, they belong to root:root
      # We need to fix this before the next steps
      - name: Fix file permissions
        run: sudo chown -R runner:docker .

      # This is needed to run the normalize step
      - name: Install native Ruby dependencies
        run: sudo apt-get install -y libicu-dev libidn11-dev

      - name: Set up Ruby
        uses: ruby/setup-ruby@v1
        with:
          ruby-version: .ruby-version
          bundler-cache: true

      - name: Run i18n normalize task
        run: bundle exec i18n-tasks normalize

      # Create or update the pull request
      - name: Create Pull Request
        uses: peter-evans/create-pull-request@v5.0.2
        with:
          commit-message: 'New Crowdin translations'
          title: 'New Crowdin Translations (automated)'
          author: 'GitHub Actions <noreply@github.com>'
          body: |
            New Crowdin translations, automated with Github Actions

            See `.github/workflows/crowdin-download.yml`

            This PR will be updated every day with new translations.

            Due to a limitation in Github Actions, checks are not running on this PR without manual action.
            If you want to run the checks, then close and re-open it.
          branch: i18n/crowdin/translations
          base: main
          labels: i18n

A .github/workflows/crowdin-upload.yml => .github/workflows/crowdin-upload.yml +35 -0
@@ 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 }}

M crowdin.yml => crowdin.yml +5 -0
@@ 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