Crowdin Pull #139
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
name: Crowdin Pull | |
on: | |
schedule: | |
- cron: '0 6 * * *' | |
workflow_dispatch: | |
concurrency: | |
group: ${{ github.workflow }}-${{ github.ref }} | |
cancel-in-progress: true | |
jobs: | |
pull-from-crowdin: | |
runs-on: ubuntu-latest | |
steps: | |
- name: Checkout | |
uses: actions/checkout@v4 | |
with: | |
# Without this, the default GITHUB_TOKEN gets saved in the local git | |
# settings, and it might be overriding the GITHUB_TOKEN we set | |
# below for the crowdin action, and apparently the default | |
# GITHUB_TOKEN does not trigger actions because... reasons. | |
# https://github.com/orgs/community/discussions/25702#discussioncomment-6313966 | |
persist-credentials: false | |
- name: Install Node.js, NPM and Yarn | |
uses: actions/setup-node@v4 | |
with: | |
node-version: 18 | |
- name: Cache node modules | |
uses: actions/cache@v4 | |
id: cache | |
with: | |
path: node_modules | |
key: node-modules-${{ hashFiles('**/package-lock.json') }} | |
- name: Install node dependencies | |
if: steps.cache.outputs.cache-hit != 'true' | |
run: npm install | |
# Need this for pre-commit linting of Ruby | |
- name: Install Ruby and gems | |
uses: ruby/setup-ruby@v1 | |
with: | |
bundler-cache: true | |
- name: Sync with Crowdin | |
uses: crowdin/github-action@v2 | |
with: | |
# Note: a lot of the way this behaves is controlled in crowdin.yml, | |
# e.g. the path to the source files and paths to translations | |
# Upload options | |
upload_sources: false | |
upload_translations: false | |
# Download options | |
download_translations: true | |
skip_untranslated_strings: true | |
export_only_approved: true | |
# Without this, the action will force push changes to the branch | |
# before we get a chance to normalize and validate in the next | |
# step | |
push_translations: false | |
# Pull request options | |
create_pull_request: false | |
env: | |
GITHUB_TOKEN: ${{ secrets.CROWDIN_GITHUB_TOKEN }} | |
CROWDIN_PROJECT_ID: ${{ secrets.CROWDIN_PROJECT_ID }} | |
CROWDIN_PERSONAL_TOKEN: ${{ secrets.CROWDIN_PERSONAL_TOKEN }} | |
# The crowdin action adds new files owned by root. We need the default | |
# user to own them so we can move them around | |
- name: Change ownership | |
run: sudo chown -R $USER * | |
# Move files named with crowdin locales to files named with iNat | |
# locales. This will also fail if there's invalid FTL. We might want to | |
# separate those things in the future if it's easier to notice | |
# validation failures in the PR | |
- name: Normalize and validate | |
run: npm run translate | |
- name: Prepare Fastlane metadata directories | |
run: npm run prepare-fastlane-metadata | |
- name: Make pull request | |
# The original doesn't support making a pull request without | |
# downloading, which we don't want to do b/c that would recreate the | |
# Crowdin-named files that we just removed in the previous step, so | |
# we're using a fork. | |
uses: inaturalist/crowdin-github-action@pr-without-download | |
with: | |
# Note: a lot of the way this behaves is controlled in crowdin.yml, | |
# e.g. the path to the source files and paths to translations | |
# Upload options | |
upload_sources: false | |
upload_translations: false | |
# Download options | |
download_translations: false | |
# Pull request options | |
create_pull_request: true | |
localization_branch_name: l10n_main | |
pull_request_title: 'New Crowdin Translations' | |
pull_request_body: 'New Crowdin translations by [Crowdin GH Action](https://github.com/crowdin/github-action)' | |
pull_request_base_branch_name: main | |
env: | |
GITHUB_TOKEN: ${{ secrets.CROWDIN_GITHUB_TOKEN }} | |
CROWDIN_PROJECT_ID: ${{ secrets.CROWDIN_PROJECT_ID }} | |
CROWDIN_PERSONAL_TOKEN: ${{ secrets.CROWDIN_PERSONAL_TOKEN }} | |
notify: | |
name: Notify Slack | |
needs: pull-from-crowdin | |
if: ${{ failure() }} | |
runs-on: ubuntu-latest | |
steps: | |
- uses: iRoachie/slack-github-actions@v2.3.2 | |
if: env.SLACK_WEBHOOK_URL != null | |
env: | |
SLACK_WEBHOOK_URL: ${{ secrets.SLACK_BUILDS_WEBHOOK_URL }} | |
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} |