From 2da01ca1c7a494fda06aa02353baf3e585f63127 Mon Sep 17 00:00:00 2001 From: Arvin Xu Date: Tue, 4 Nov 2025 01:54:07 +0800 Subject: [PATCH] =?UTF-8?q?=F0=9F=94=A8=20chore:=20add=20workflow=20for=20?= =?UTF-8?q?translating=20Chinese=20comments=20to=20English=20(#10027)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-authored-by: Claude --- .claude/prompts/translate-comments.md | 89 +++++++++++++++++++ .../workflows/claude-translate-comments.yml | 67 ++++++++++++++ 2 files changed, 156 insertions(+) create mode 100644 .claude/prompts/translate-comments.md create mode 100644 .github/workflows/claude-translate-comments.yml diff --git a/.claude/prompts/translate-comments.md b/.claude/prompts/translate-comments.md new file mode 100644 index 0000000000..1c87062dc6 --- /dev/null +++ b/.claude/prompts/translate-comments.md @@ -0,0 +1,89 @@ +# Code Comment Translation Assistant + +You are a code comment translation assistant. Your task is to find non-English comments in the codebase and translate them to English. + +## Target Directories + +- apps/desktop/src/ +- packages/\*/src/ +- src + +## Workflow + +### 1. Select a Module to Process + +Module granularity examples: + +- A single package: `packages/database` +- A desktop module: `apps/desktop/src/modules/auth` +- A service directory: `src/services/user` + +### 2. Find Non-English Comments + +- Search for files containing non-English characters in comments (excluding test files) +- File types to check: `.ts`, `.tsx` +- Exclude: `*.test.ts`, `*.test.tsx`, `*.spec.ts`, `*.spec.tsx`, `node_modules`, `dist`, `build` + +### 3. Translate Comments + +- Translate all non-English comments to English while preserving: + - Code functionality (do not change any code) + - Comment structure and formatting + - JSDoc tags and annotations + - Markdown formatting in comments +- Translation guidelines: + - Keep technical terms accurate + - Maintain professional tone + - Preserve line breaks and indentation + - Keep TODO/FIXME/NOTE markers in English + +### 4. Limit Changes + +- **CRITICAL**: Ensure total changes do not exceed 500 lines +- If a module would exceed 500 lines, process only part of it +- Count lines using: `git diff --stat` +- Stop processing files once approaching the 500-line limit + +### 5. Create Pull Request + +- Create a new branch: `automatic/translate-comments-[module-name]-[date]` +- Commit changes with message format: + ``` + 🌐 chore: translate non-English comments to English in [module-name] + ``` +- Push the branch +- Create a PR with: + + - Title: `🌐 chore: translate non-English comments to English in [module-name]` + - Body following this template: + + ```markdown + ## Summary + + - Translated non-English comments to English in `[module-name]` + - Total lines changed: [number] lines + - Files affected: [number] files + + ## Changes + + - [ ] All non-English comments translated to English + - [ ] Code functionality unchanged + - [ ] Comment formatting preserved + + ## Module Processed + + `[module-path]` + + --- + 🤖 Generated with [Claude Code](https://claude.com/claude-code) + ``` + +## Important Rules + +- **DO NOT** modify any code logic, only comments +- **DO NOT** translate non-English strings in code (only comments) +- **DO NOT** exceed 500 lines of changes in one PR +- **DO NOT** process test files or generated files +- **DO** preserve all code formatting and structure +- **DO** ensure translations are technically accurate +- **DO** verify changes compile without errors diff --git a/.github/workflows/claude-translate-comments.yml b/.github/workflows/claude-translate-comments.yml new file mode 100644 index 0000000000..76acc767c6 --- /dev/null +++ b/.github/workflows/claude-translate-comments.yml @@ -0,0 +1,67 @@ +name: Claude Translate Non-English Comments +description: Automatically detect and translate non-English comments to English in codebase + +on: + schedule: + # Run daily at 02:00 UTC (10:00 Beijing Time) + - cron: '0 2 * * *' + workflow_dispatch: + inputs: + target_module: + description: 'Specific module to translate (e.g., packages/database, apps/desktop/src/modules/auth)' + required: false + type: string + +concurrency: + group: translate-comments + cancel-in-progress: false + +jobs: + translate-comments: + runs-on: ubuntu-latest + timeout-minutes: 30 + permissions: + contents: write + pull-requests: write + id-token: write + + steps: + - name: Checkout repository + uses: actions/checkout@v5 + with: + fetch-depth: 1 + + - name: Configure Git + run: | + git config --global user.name "claude-bot[bot]" + git config --global user.email "claude-bot[bot]@users.noreply.github.com" + + - name: Copy translation prompt + run: | + mkdir -p /tmp/claude-prompts + cp .claude/prompts/translate-comments.md /tmp/claude-prompts/ + + - name: Run Claude Code for Comment Translation + uses: anthropics/claude-code-action@main + with: + github_token: ${{ secrets.GH_TOKEN }} + allowed_non_write_users: "*" + claude_code_oauth_token: ${{ secrets.CLAUDE_CODE_OAUTH_TOKEN }} + claude_args: "--allowed-tools Bash,Read,Edit,Glob,Grep" + prompt: | + Follow the translation guide located at: + ```bash + cat /tmp/claude-prompts/translate-comments.md + ``` + + ## Task Assignment + + ${{ inputs.target_module && format('Process the specified module: {0}', inputs.target_module) || 'Automatically select one module from the target directories that has not been processed recently' }} + + ## Environment Information + - Repository: ${{ github.repository }} + - Branch: ${{ github.ref_name }} + - Target Module: ${{ inputs.target_module || 'Auto-select' }} + - Run ID: ${{ github.run_id }} + + **Start the translation process now.**