name: Claude Translator concurrency: group: translator-${{ github.event.comment.id || github.event.issue.number }} cancel-in-progress: false on: issues: types: [opened] issue_comment: types: [created, edited] jobs: translate: if: | (github.event_name == 'issues') || (github.event_name == 'issue_comment' && github.event.sender.type != 'Bot') && ((github.event_name == 'issue_comment' && github.event.action == 'created' && !contains(github.event.comment.body, 'This issue was translated by Claude')) || (github.event_name == 'issue_comment' && github.event.action == 'edited')) runs-on: ubuntu-latest permissions: contents: read issues: write # 编辑issues/comments pull-requests: write id-token: write steps: - name: Checkout repository uses: actions/checkout@v4 with: fetch-depth: 1 - name: Run Claude for translation uses: anthropics/claude-code-action@main id: claude with: # Warning: Permissions should have been controlled by workflow permission. # Now `contents: read` is safe for files, but we could make a fine-grained token to control it. # See: https://github.com/anthropics/claude-code-action/blob/main/docs/security.md github_token: ${{ secrets.TOKEN_GITHUB_WRITE }} allowed_non_write_users: '*' claude_code_oauth_token: ${{ secrets.CLAUDE_CODE_OAUTH_TOKEN }} claude_args: '--allowed-tools Bash(gh issue:*),Bash(gh api:repos/*/issues:*)' prompt: | 你是一个多语言翻译助手。请完成以下任务: 1. 获取当前issue/comment的完整信息 2. 智能检测内容。 1. 如果是已经遵循格式要求翻译过的issue/comment,检查翻译内容和原始内容是否匹配。若不匹配,则重新翻译一次令其匹配,并遵循格式要求;若匹配,则跳过任务。 2. 如果是未翻译过的issue/comment,检查其内容语言。若不是英文,则翻译成英文;若已经是英文,则跳过任务。 3. 格式要求: - 标题:英文翻译(如果非英文) - 内容格式: > [!NOTE] > This issue/comment was translated by Claude. [英文翻译内容] ---
Original Content [原始内容]
4. 使用gh工具更新: - 根据环境信息中的Event类型选择正确的命令: - 如果Event是'issues':gh issue edit [ISSUE_NUMBER] --title "[英文标题]" --body "[翻译内容 + 原始内容]" - 如果Event是'issue_comment':gh api -X PATCH /repos/[REPO]/issues/comments/[COMMENT_ID] -f body="[翻译内容 + 原始内容]" 环境信息: - Event: ${{ github.event_name }} - Issue Number: ${{ github.event.issue.number }} - Repository: ${{ github.repository }} - Comment ID: ${{ github.event.comment.id || 'N/A' }} (only available for comment events) 使用以下命令获取完整信息: gh issue view ${{ github.event.issue.number }} --json title,body,comments