name: Auto Translate on: workflow_dispatch: permissions: contents: write pull-requests: write jobs: translate-zh: runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 - uses: actions/setup-node@v4 with: node-version: "20" - run: npx i18n-auto-translation -k ${{ secrets.GOOGLE_TRANSLATE_API_KEY }} -d "src/locales" -f en -t zh --maxLinesPerRequest 1 - uses: actions/upload-artifact@v4 with: name: translations-zh path: src/locales/zh.json continue-on-error: true translate-ru: runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 - uses: actions/setup-node@v4 with: node-version: "20" - run: npx i18n-auto-translation -k ${{ secrets.GOOGLE_TRANSLATE_API_KEY }} -d "src/locales" -f en -t ru --maxLinesPerRequest 1 - uses: actions/upload-artifact@v4 with: name: translations-ru path: src/locales/ru.json continue-on-error: true translate-pt: runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 - uses: actions/setup-node@v4 with: node-version: "20" - run: npx i18n-auto-translation -k ${{ secrets.GOOGLE_TRANSLATE_API_KEY }} -d "src/locales" -f en -t pt --maxLinesPerRequest 1 - uses: actions/upload-artifact@v4 with: name: translations-pt path: src/locales/pt.json continue-on-error: true translate-fr: runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 - uses: actions/setup-node@v4 with: node-version: "20" - run: npx i18n-auto-translation -k ${{ secrets.GOOGLE_TRANSLATE_API_KEY }} -d "src/locales" -f en -t fr --maxLinesPerRequest 1 - uses: actions/upload-artifact@v4 with: name: translations-fr path: src/locales/fr.json continue-on-error: true translate-es: runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 - uses: actions/setup-node@v4 with: node-version: "20" - run: npx i18n-auto-translation -k ${{ secrets.GOOGLE_TRANSLATE_API_KEY }} -d "src/locales" -f en -t es --maxLinesPerRequest 1 - uses: actions/upload-artifact@v4 with: name: translations-es path: src/locales/es.json continue-on-error: true translate-de: runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 - uses: actions/setup-node@v4 with: node-version: "20" - run: npx i18n-auto-translation -k ${{ secrets.GOOGLE_TRANSLATE_API_KEY }} -d "src/locales" -f en -t de --maxLinesPerRequest 1 - uses: actions/upload-artifact@v4 with: name: translations-de path: src/locales/de.json continue-on-error: true translate-hi: runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 - uses: actions/setup-node@v4 with: node-version: "20" - run: npx i18n-auto-translation -k ${{ secrets.GOOGLE_TRANSLATE_API_KEY }} -d "src/locales" -f en -t hi --maxLinesPerRequest 1 - uses: actions/upload-artifact@v4 with: name: translations-hi path: src/locales/hi.json continue-on-error: true translate-bn: runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 - uses: actions/setup-node@v4 with: node-version: "20" - run: npx i18n-auto-translation -k ${{ secrets.GOOGLE_TRANSLATE_API_KEY }} -d "src/locales" -f en -t bn --maxLinesPerRequest 1 - uses: actions/upload-artifact@v4 with: name: translations-bn path: src/locales/bn.json continue-on-error: true translate-ja: runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 - uses: actions/setup-node@v4 with: node-version: "20" - run: npx i18n-auto-translation -k ${{ secrets.GOOGLE_TRANSLATE_API_KEY }} -d "src/locales" -f en -t ja --maxLinesPerRequest 1 - uses: actions/upload-artifact@v4 with: name: translations-ja path: src/locales/ja.json continue-on-error: true translate-vi: runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 - uses: actions/setup-node@v4 with: node-version: "20" - run: npx i18n-auto-translation -k ${{ secrets.GOOGLE_TRANSLATE_API_KEY }} -d "src/locales" -f en -t vi --maxLinesPerRequest 1 - uses: actions/upload-artifact@v4 with: name: translations-vi path: src/locales/vi.json continue-on-error: true translate-tr: runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 - uses: actions/setup-node@v4 with: node-version: "20" - run: npx i18n-auto-translation -k ${{ secrets.GOOGLE_TRANSLATE_API_KEY }} -d "src/locales" -f en -t tr --maxLinesPerRequest 1 - uses: actions/upload-artifact@v4 with: name: translations-tr path: src/locales/tr.json continue-on-error: true translate-ko: runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 - uses: actions/setup-node@v4 with: node-version: "20" - run: npx i18n-auto-translation -k ${{ secrets.GOOGLE_TRANSLATE_API_KEY }} -d "src/locales" -f en -t ko --maxLinesPerRequest 1 - uses: actions/upload-artifact@v4 with: name: translations-ko path: src/locales/ko.json continue-on-error: true translate-it: runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 - uses: actions/setup-node@v4 with: node-version: "20" - run: npx i18n-auto-translation -k ${{ secrets.GOOGLE_TRANSLATE_API_KEY }} -d "src/locales" -f en -t it --maxLinesPerRequest 1 - uses: actions/upload-artifact@v4 with: name: translations-it path: src/locales/it.json continue-on-error: true translate-he: runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 - uses: actions/setup-node@v4 with: node-version: "20" - run: npx i18n-auto-translation -k ${{ secrets.GOOGLE_TRANSLATE_API_KEY }} -d "src/locales" -f en -t he --maxLinesPerRequest 1 - uses: actions/upload-artifact@v4 with: name: translations-he path: src/locales/he.json continue-on-error: true translate-ar: runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 - uses: actions/setup-node@v4 with: node-version: "20" - run: npx i18n-auto-translation -k ${{ secrets.GOOGLE_TRANSLATE_API_KEY }} -d "src/locales" -f en -t ar --maxLinesPerRequest 1 - uses: actions/upload-artifact@v4 with: name: translations-ar path: src/locales/ar.json continue-on-error: true translate-pl: runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 - uses: actions/setup-node@v4 with: node-version: "20" - run: npx i18n-auto-translation -k ${{ secrets.GOOGLE_TRANSLATE_API_KEY }} -d "src/locales" -f en -t pl --maxLinesPerRequest 1 - uses: actions/upload-artifact@v4 with: name: translations-pl path: src/locales/pl.json continue-on-error: true translate-nl: runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 - uses: actions/setup-node@v4 with: node-version: "20" - run: npx i18n-auto-translation -k ${{ secrets.GOOGLE_TRANSLATE_API_KEY }} -d "src/locales" -f en -t nl --maxLinesPerRequest 1 - uses: actions/upload-artifact@v4 with: name: translations-nl path: src/locales/nl.json continue-on-error: true translate-sv: runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 - uses: actions/setup-node@v4 with: node-version: "20" - run: npx i18n-auto-translation -k ${{ secrets.GOOGLE_TRANSLATE_API_KEY }} -d "src/locales" -f en -t sv --maxLinesPerRequest 1 - uses: actions/upload-artifact@v4 with: name: translations-sv path: src/locales/sv.json continue-on-error: true translate-id: runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 - uses: actions/setup-node@v4 with: node-version: "20" - run: npx i18n-auto-translation -k ${{ secrets.GOOGLE_TRANSLATE_API_KEY }} -d "src/locales" -f en -t id --maxLinesPerRequest 1 - uses: actions/upload-artifact@v4 with: name: translations-id path: src/locales/id.json continue-on-error: true translate-th: runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 - uses: actions/setup-node@v4 with: node-version: "20" - run: npx i18n-auto-translation -k ${{ secrets.GOOGLE_TRANSLATE_API_KEY }} -d "src/locales" -f en -t th --maxLinesPerRequest 1 - uses: actions/upload-artifact@v4 with: name: translations-th path: src/locales/th.json continue-on-error: true translate-uk: runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 - uses: actions/setup-node@v4 with: node-version: "20" - run: npx i18n-auto-translation -k ${{ secrets.GOOGLE_TRANSLATE_API_KEY }} -d "src/locales" -f en -t uk --maxLinesPerRequest 1 - uses: actions/upload-artifact@v4 with: name: translations-uk path: src/locales/uk.json continue-on-error: true translate-cs: runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 - uses: actions/setup-node@v4 with: node-version: "20" - run: npx i18n-auto-translation -k ${{ secrets.GOOGLE_TRANSLATE_API_KEY }} -d "src/locales" -f en -t cs --maxLinesPerRequest 1 - uses: actions/upload-artifact@v4 with: name: translations-cs path: src/locales/cs.json continue-on-error: true translate-ro: runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 - uses: actions/setup-node@v4 with: node-version: "20" - run: npx i18n-auto-translation -k ${{ secrets.GOOGLE_TRANSLATE_API_KEY }} -d "src/locales" -f en -t ro --maxLinesPerRequest 1 - uses: actions/upload-artifact@v4 with: name: translations-ro path: src/locales/ro.json continue-on-error: true translate-el: runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 - uses: actions/setup-node@v4 with: node-version: "20" - run: npx i18n-auto-translation -k ${{ secrets.GOOGLE_TRANSLATE_API_KEY }} -d "src/locales" -f en -t el --maxLinesPerRequest 1 - uses: actions/upload-artifact@v4 with: name: translations-el path: src/locales/el.json continue-on-error: true translate-nb: runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 - uses: actions/setup-node@v4 with: node-version: "20" - run: npx i18n-auto-translation -k ${{ secrets.GOOGLE_TRANSLATE_API_KEY }} -d "src/locales" -f en -t nb --maxLinesPerRequest 1 - uses: actions/upload-artifact@v4 with: name: translations-nb path: src/locales/nb.json continue-on-error: true create-pr: needs: [ translate-zh, translate-ru, translate-pt, translate-fr, translate-es, translate-de, translate-hi, translate-bn, translate-ja, translate-vi, translate-tr, translate-ko, translate-it, translate-he, translate-ar, translate-pl, translate-nl, translate-sv, translate-id, translate-th, translate-uk, translate-cs, translate-ro, translate-el, translate-nb, ] runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 with: token: ${{ secrets.GHCR_TOKEN }} - name: Download all artifacts uses: actions/download-artifact@v4 with: path: translations-temp - name: Move translations to src/locales run: | cp translations-temp/translations-zh/zh.json src/locales/ 2>/dev/null || true cp translations-temp/translations-ru/ru.json src/locales/ 2>/dev/null || true cp translations-temp/translations-pt/pt.json src/locales/ 2>/dev/null || true cp translations-temp/translations-fr/fr.json src/locales/ 2>/dev/null || true cp translations-temp/translations-es/es.json src/locales/ 2>/dev/null || true cp translations-temp/translations-de/de.json src/locales/ 2>/dev/null || true cp translations-temp/translations-hi/hi.json src/locales/ 2>/dev/null || true cp translations-temp/translations-bn/bn.json src/locales/ 2>/dev/null || true cp translations-temp/translations-ja/ja.json src/locales/ 2>/dev/null || true cp translations-temp/translations-vi/vi.json src/locales/ 2>/dev/null || true cp translations-temp/translations-tr/tr.json src/locales/ 2>/dev/null || true cp translations-temp/translations-ko/ko.json src/locales/ 2>/dev/null || true cp translations-temp/translations-it/it.json src/locales/ 2>/dev/null || true cp translations-temp/translations-he/he.json src/locales/ 2>/dev/null || true cp translations-temp/translations-ar/ar.json src/locales/ 2>/dev/null || true cp translations-temp/translations-pl/pl.json src/locales/ 2>/dev/null || true cp translations-temp/translations-nl/nl.json src/locales/ 2>/dev/null || true cp translations-temp/translations-sv/sv.json src/locales/ 2>/dev/null || true cp translations-temp/translations-id/id.json src/locales/ 2>/dev/null || true cp translations-temp/translations-th/th.json src/locales/ 2>/dev/null || true cp translations-temp/translations-uk/uk.json src/locales/ 2>/dev/null || true cp translations-temp/translations-cs/cs.json src/locales/ 2>/dev/null || true cp translations-temp/translations-ro/ro.json src/locales/ 2>/dev/null || true cp translations-temp/translations-el/el.json src/locales/ 2>/dev/null || true cp translations-temp/translations-nb/nb.json src/locales/ 2>/dev/null || true rm -rf translations-temp - name: Create Pull Request uses: peter-evans/create-pull-request@v6 with: token: ${{ secrets.GHCR_TOKEN }} commit-message: "chore: auto-translate to multiple languages" branch: translations-update delete-branch: true title: "chore: Update translations for all languages"