name: i18n - Download Docs
on:
  workflow_dispatch:
  schedule:
    # runs every weekday at 12:00 noon UTC
    - cron: '0 12 * * 1-5'

env:
  GITHUB_TOKEN: ${{ secrets.CROWDIN_CAMPERBOT_PAT }}
  CROWDIN_PROJECT_ID: ${{ secrets.CROWDIN_PROJECT_ID_DOCS }}
  CROWDIN_PERSONAL_TOKEN: ${{ secrets.CROWDIN_CAMPERBOT_SERVICE_TOKEN }}
  CROWDIN_API_URL: 'https://freecodecamp.crowdin.com/api/v2/'

jobs:
  i18n-download-docs-translations:
    name: Docs
    runs-on: ubuntu-20.04

    steps:
      - name: Checkout Source Files
        uses: actions/checkout@c85c95e3d7251135ab7dc9ce3241c5835cc595a9 # v3
        with:
          token: ${{ secrets.CROWDIN_CAMPERBOT_PAT }}

      - name: Generate Crowdin Config
        uses: freecodecamp/crowdin-action@main
        env:
          PLUGIN: 'generate-config'
          PROJECT_NAME: 'docs'

      ##### 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: '["/docs/i18n/chinese/"]'

      ##### Download Portuguese#####
      - name: Crowdin Download Portuguese 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 Espanol #####
      - name: Crowdin Espanol Download 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 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 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 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

      # 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-docs'
          GH_MESSAGE: 'chore(i18n,docs): 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-docs'
          REPOSITORY: 'freecodecamp/freecodecamp'
          BASE: 'main'
          TITLE: 'chore(i18n,docs): processed translations'
          BODY: 'This PR was opened auto-magically by Crowdin.'
          LABELS: 'crowdin-sync'
          TEAM_REVIEWERS: 'i18n'
