diff --git a/.github/allowed-actions.js b/.github/allowed-actions.js index 66c06473dc..4d60d0feb6 100644 --- a/.github/allowed-actions.js +++ b/.github/allowed-actions.js @@ -15,6 +15,7 @@ module.exports = [ 'actions/setup-node@v1', 'actions/setup-ruby@v1', 'actions/stale@v3', + 'crowdin/github-action@1.0.10', 'dawidd6/action-delete-branch@v3', 'docker://chinthakagodawita/autoupdate-action:v1', 'github/codeql-action/analyze@v1', diff --git a/.github/workflows/crowdin.yml b/.github/workflows/crowdin.yml new file mode 100644 index 0000000000..48100cbbe1 --- /dev/null +++ b/.github/workflows/crowdin.yml @@ -0,0 +1,50 @@ +# Please ping @github/docs-localization in the PR whenever you update this file! + +name: Crowdin Sync + +on: + push: + branches: + - main + +jobs: + sync_with_crowdin: + name: Sync with Crowdin + runs-on: ubuntu-latest + steps: + - name: Checkout + uses: actions/checkout@v2 + + - name: Sync + uses: crowdin/github-action@1.0.10 + with: + upload_translations: true + download_translations: true + create_pull_request: true + + # Using a custom config temporarily to avoid clobbering the existing crowdin.yml + # that is used by the github-help-docs OAuth integration. + config: 'crowdin-actions-config.yml' + + # This is the name of the git branch that Crowdin will create when opening a pull request. + # This branch does NOT need to be manually created. It will be created automatically by the action. + localization_branch_name: automated-crowdin-translations + + # This is the name of the top-level directory that Crowdin will use for files. + # Note that this is not a "branch" in the git sense, but more like a top-level directory in your Crowdin project. + # This branch does NOT need to be manually created. It will be created automatically by the action. + crowdin_branch_name: crowdin-main + + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + + # This is a numeric id, not to be confused with Crowdin API v1 "project identifier" string + # See "API v2" on https://crowdin.com/project//settings#api + CROWDIN_PROJECT_ID: ${{ secrets.CROWDIN_PROJECT_ID }} + + # A personal access token, not to be confused with Crowdin API v1 "API key" + # See https://crowdin.com/settings#api-key to generate a token + # This token was created by logging into Crowdin with the octoglot user + CROWDIN_PERSONAL_TOKEN: ${{ secrets.CROWDIN_PERSONAL_TOKEN }} + + \ No newline at end of file diff --git a/crowdin-actions-config.yml b/crowdin-actions-config.yml new file mode 100644 index 0000000000..ef80b4ec26 --- /dev/null +++ b/crowdin-actions-config.yml @@ -0,0 +1,25 @@ +files: + - source: /content/**/*.md + translation: /translations/%locale%/%original_path%/%original_file_name% + ignore: [ + "/content/README.md" + ] + - source: /data/**/*.yml + translation: /translations/%locale%/%original_path%/%original_file_name% + - source: /data/**/*.md + translation: /translations/%locale%/%original_path%/%original_file_name% + ignore: [ + "data/README.md", + "data/reusables/README.md", + "data/variables/product.yml", + "data/variables/README.md", + "data/graphql", + "data/products.yml" + ] + +# These end up as env vars used by the GitHub Actions workflow +project_id_env: CROWDIN_PROJECT_ID +api_token_env: CROWDIN_PERSONAL_TOKEN + +# https://support.crowdin.com/configuration-file-v3/#saving-directory-structure-on-server +preserve_hierarchy: true \ No newline at end of file