name: Auto I18N

env:
  API_KEY: ${{ secrets.TRANSLATE_API_KEY }}
  MODEL: ${{ vars.MODEL || 'deepseek/deepseek-v3.1'}}
  BASE_URL: ${{ vars.BASE_URL || 'https://api.ppinfra.com/openai'}}

on:
  pull_request:
    types: [opened, synchronize, reopened]
  workflow_dispatch:

jobs:
  auto-i18n:
    runs-on: ubuntu-latest
    if: github.event.pull_request.head.repo.full_name == 'CherryHQ/cherry-studio'
    name: Auto I18N
    permissions:
      contents: write
      pull-requests: write

    steps:
      - name: 🐈‍⬛ Checkout
        uses: actions/checkout@v5
        with:
          ref: ${{ github.event.pull_request.head.ref }}

      - name: 📦 Setting Node.js
        uses: actions/setup-node@v4
        with:
          node-version: 20

      - name: 📦 Install dependencies in isolated directory
        run: |
          # 在临时目录安装依赖
          mkdir -p /tmp/translation-deps
          cd /tmp/translation-deps
          echo '{"dependencies": {"openai": "^5.12.2", "cli-progress": "^3.12.0", "tsx": "^4.20.3", "@biomejs/biome": "2.2.4"}}' > package.json
          npm install --no-package-lock

          # 设置 NODE_PATH 让项目能找到这些依赖
          echo "NODE_PATH=/tmp/translation-deps/node_modules" >> $GITHUB_ENV

      - name: 🏃‍♀️ Translate
        run: npx tsx scripts/auto-translate-i18n.ts

      - name: 🔍 Format
        run: cd /tmp/translation-deps && npx biome format --config-path /home/runner/work/cherry-studio/cherry-studio/biome.jsonc --write /home/runner/work/cherry-studio/cherry-studio/src/renderer/src/i18n/

      - name: 🔄 Commit changes
        run: |
          git config --local user.email "action@github.com"
          git config --local user.name "GitHub Action"
          git add .
          git reset -- package.json yarn.lock  # 不提交 package.json 和 yarn.lock 的更改
          if git diff --cached --quiet; then
            echo "No changes to commit"
          else
            git commit -m "fix(i18n): Auto update translations for PR #${{ github.event.pull_request.number }}"
          fi

      - name: 🚀 Push changes
        uses: ad-m/github-push-action@master
        with:
          github_token: ${{ secrets.GITHUB_TOKEN }}
          branch: ${{ github.event.pull_request.head.ref }}
