i18n - Download Client UI #3
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: i18n - Download Client UI | |
on: | |
workflow_dispatch: | |
schedule: | |
# runs Monday and Wednesday at 12:15 PM UTC | |
- cron: '15 12 * * 1,3' | |
env: | |
GITHUB_TOKEN: ${{ secrets.CROWDIN_CAMPERBOT_PAT }} | |
CROWDIN_PERSONAL_TOKEN: ${{ secrets.CROWDIN_CAMPERBOT_SERVICE_TOKEN }} | |
CROWDIN_API_URL: 'https://freecodecamp.crowdin.com/api/v2/' | |
CROWDIN_PROJECT_ID: ${{ secrets.CROWDIN_PROJECT_ID_CLIENT }} | |
jobs: | |
i18n-download-client-ui-translations: | |
name: Client | |
runs-on: ubuntu-22.04 | |
steps: | |
- name: Checkout Source Files | |
uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1 | |
with: | |
token: ${{ secrets.CROWDIN_CAMPERBOT_PAT }} | |
- name: Generate Crowdin Config | |
uses: freecodecamp/crowdin-action@main | |
env: | |
PLUGIN: 'generate-config' | |
PROJECT_NAME: 'client' | |
##### Download Chinese ##### | |
- name: Crowdin Download Chinese Translations | |
uses: crowdin/github-action@master | |
# options: https://github.com/crowdin/github-action/blob/master/action.yml | |
with: | |
# uploads | |
upload_sources: false | |
upload_translations: false | |
auto_approve_imported: false | |
import_eq_suggestions: false | |
# downloads | |
download_translations: true | |
download_language: zh-CN | |
skip_untranslated_files: false | |
export_only_approved: true | |
push_translations: false | |
# pull-request | |
create_pull_request: false | |
# global options | |
config: './crowdin-config.yml' | |
base_url: ${{ secrets.CROWDIN_BASE_URL_FCC }} | |
# Uncomment below to debug | |
# dryrun_action: true | |
# Convert Simplified Chinese to Traditional # | |
- name: Convert Chinese | |
uses: freecodecamp/crowdin-action@main | |
env: | |
PLUGIN: 'convert-chinese' | |
FILE_PATHS: '["client/i18n/locales/chinese"]' | |
##### Download Espanol ##### | |
- name: Crowdin Download Espanol Translations | |
uses: crowdin/github-action@master | |
# options: https://github.com/crowdin/github-action/blob/master/action.yml | |
with: | |
# uploads | |
upload_sources: false | |
upload_translations: false | |
auto_approve_imported: false | |
import_eq_suggestions: false | |
# downloads | |
download_translations: true | |
download_language: es-EM | |
skip_untranslated_files: false | |
export_only_approved: true | |
push_translations: false | |
# pull-request | |
create_pull_request: false | |
# global options | |
config: './crowdin-config.yml' | |
base_url: ${{ secrets.CROWDIN_BASE_URL_FCC }} | |
# Uncomment below to debug | |
# dryrun_action: true | |
##### Download Italian ##### | |
- name: Crowdin Download Italian Translations | |
uses: crowdin/github-action@master | |
# options: https://github.com/crowdin/github-action/blob/master/action.yml | |
with: | |
# uploads | |
upload_sources: false | |
upload_translations: false | |
auto_approve_imported: false | |
import_eq_suggestions: false | |
# downloads | |
download_translations: true | |
download_language: it | |
skip_untranslated_files: false | |
export_only_approved: true | |
push_translations: false | |
# pull-request | |
create_pull_request: false | |
# global options | |
config: './crowdin-config.yml' | |
base_url: ${{ secrets.CROWDIN_BASE_URL_FCC }} | |
# Uncomment below to debug | |
# dryrun_action: true | |
##### Download Brazilian Portuguese ##### | |
- name: Crowdin Download Portuguese (Brazilian) Translations | |
uses: crowdin/github-action@master | |
# options: https://github.com/crowdin/github-action/blob/master/action.yml | |
with: | |
# uploads | |
upload_sources: false | |
upload_translations: false | |
auto_approve_imported: false | |
import_eq_suggestions: false | |
# downloads | |
download_translations: true | |
download_language: pt-BR | |
skip_untranslated_files: false | |
export_only_approved: true | |
push_translations: false | |
# pull-request | |
create_pull_request: false | |
# global options | |
config: './crowdin-config.yml' | |
base_url: ${{ secrets.CROWDIN_BASE_URL_FCC }} | |
# Uncomment below to debug | |
# dryrun_action: true | |
##### Download Ukrainian ##### | |
- name: Crowdin Download Ukrainian Translations | |
uses: crowdin/github-action@master | |
# options: https://github.com/crowdin/github-action/blob/master/action.yml | |
with: | |
# uploads | |
upload_sources: false | |
upload_translations: false | |
auto_approve_imported: false | |
import_eq_suggestions: false | |
# downloads | |
download_translations: true | |
download_language: uk | |
skip_untranslated_files: false | |
export_only_approved: true | |
push_translations: false | |
# pull-request | |
create_pull_request: false | |
# global options | |
config: './crowdin-config.yml' | |
base_url: ${{ secrets.CROWDIN_BASE_URL_FCC }} | |
# Uncomment below to debug | |
# dryrun_action: true | |
##### Download Japanese ##### | |
- name: Crowdin Download Japanese Translations | |
uses: crowdin/github-action@master | |
# options: https://github.com/crowdin/github-action/blob/master/action.yml | |
with: | |
# uploads | |
upload_sources: false | |
upload_translations: false | |
auto_approve_imported: false | |
import_eq_suggestions: false | |
# downloads | |
download_translations: true | |
download_language: ja | |
skip_untranslated_files: false | |
export_only_approved: true | |
push_translations: false | |
# pull-request | |
create_pull_request: false | |
# global options | |
config: './crowdin-config.yml' | |
base_url: ${{ secrets.CROWDIN_BASE_URL_FCC }} | |
# Uncomment below to debug | |
# dryrun_action: true | |
##### Download German ##### | |
- name: Crowdin Download German Translations | |
uses: crowdin/github-action@master | |
# options: https://github.com/crowdin/github-action/blob/master/action.yml | |
with: | |
# uploads | |
upload_sources: false | |
upload_translations: false | |
auto_approve_imported: false | |
import_eq_suggestions: false | |
# downloads | |
download_translations: true | |
download_language: de | |
skip_untranslated_files: false | |
export_only_approved: true | |
push_translations: false | |
# pull-request | |
create_pull_request: false | |
# global options | |
config: './crowdin-config.yml' | |
base_url: ${{ secrets.CROWDIN_BASE_URL_FCC }} | |
# Uncomment below to debug | |
# dryrun_action: true | |
##### Download Arabic ##### | |
- name: Crowdin Download Arabic Translations | |
uses: crowdin/github-action@master | |
# options: https://github.com/crowdin/github-action/blob/master/action.yml | |
with: | |
# uploads | |
upload_sources: false | |
upload_translations: false | |
auto_approve_imported: false | |
import_eq_suggestions: false | |
# downloads | |
download_translations: true | |
download_language: ar | |
skip_untranslated_files: false | |
export_only_approved: true | |
push_translations: false | |
# pull-request | |
create_pull_request: false | |
# global options | |
config: './crowdin-config.yml' | |
base_url: ${{ secrets.CROWDIN_BASE_URL_FCC }} | |
# Uncomment below to debug | |
# dryrun_action: true | |
##### Download Swahili ##### | |
- name: Crowdin Download Swahili Translations | |
uses: crowdin/github-action@master | |
# options: https://github.com/crowdin/github-action/blob/master/action.yml | |
with: | |
# uploads | |
upload_sources: false | |
upload_translations: false | |
auto_approve_imported: false | |
import_eq_suggestions: false | |
# downloads | |
download_translations: true | |
download_language: sw | |
skip_untranslated_files: false | |
export_only_approved: true | |
push_translations: false | |
# pull-request | |
create_pull_request: false | |
# global options | |
config: './crowdin-config.yml' | |
base_url: ${{ secrets.CROWDIN_BASE_URL_FCC }} | |
# Uncomment below to debug | |
# dryrun_action: true | |
##### Download Korean ##### | |
- name: Crowdin Download Korean Translations | |
uses: crowdin/github-action@master | |
# options: https://github.com/crowdin/github-action/blob/master/action.yml | |
with: | |
# uploads | |
upload_sources: false | |
upload_translations: false | |
auto_approve_imported: false | |
import_eq_suggestions: false | |
# downloads | |
download_translations: true | |
download_language: ko | |
skip_untranslated_files: false | |
export_only_approved: true | |
push_translations: false | |
# pull-request | |
create_pull_request: false | |
# global options | |
config: './crowdin-config.yml' | |
base_url: ${{ secrets.CROWDIN_BASE_URL_FCC }} | |
# Uncomment below to debug | |
# dryrun_action: true | |
###### Format JSON ##### | |
# Crowdin gives the files read-only permissions, so we first have to allow | |
# writes. | |
- name: Format JSON | |
run: | | |
sudo chown -R $(whoami): client/i18n/locales | |
npx --yes prettier --write client/i18n/locales/**/*.json | |
###### Lowercase directory names ##### | |
- name: Lowercase Directories | |
uses: freecodecamp/crowdin-action@main | |
env: | |
PLUGIN: 'lowercase-directories' | |
FILE_PATH: 'client/i18n/locales' | |
# Crowdin translators might have the directories | |
# Create Commit | |
- name: Commit Changes | |
uses: freecodecamp/crowdin-action@main | |
env: | |
PLUGIN: 'commit-changes' | |
GH_USERNAME: 'camperbot' | |
GH_EMAIL: ${{ secrets.ACTIONS_CAMPERBOT_EMAIL }} | |
GH_BRANCH: 'i18n-sync-client' | |
GH_MESSAGE: 'chore(i18n,client): processed translations' | |
# Generate PR # | |
# All languages should go ABOVE this. # | |
- name: Create PR | |
uses: freecodecamp/crowdin-action@main | |
env: | |
PLUGIN: 'pull-request' | |
GH_TOKEN: ${{ secrets.CROWDIN_CAMPERBOT_PAT }} | |
BRANCH: 'i18n-sync-client' | |
REPOSITORY: 'freecodecamp/freecodecamp' | |
BASE: 'main' | |
TITLE: 'chore(i18n,client): processed translations' | |
BODY: 'This PR was opened auto-magically by Crowdin.' | |
LABELS: 'crowdin-sync' | |
TEAM_REVIEWERS: 'i18n' |