Simple README Translation #3
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| name: Simple README Translation | |
| on: | |
| push: | |
| branches: | |
| - master | |
| paths: | |
| - 'README.md' | |
| workflow_dispatch: | |
| jobs: | |
| translate-simple: | |
| name: Simple README Translation | |
| runs-on: ubuntu-latest | |
| permissions: | |
| contents: write | |
| pull-requests: write | |
| steps: | |
| - name: Checkout | |
| uses: actions/checkout@v4 | |
| with: | |
| token: ${{ secrets.GITHUB_TOKEN }} | |
| - name: Setup Python | |
| uses: actions/setup-python@v4 | |
| with: | |
| python-version: '3.9' | |
| - name: Install translation dependencies | |
| run: | | |
| pip install googletrans==4.0.0rc1 | |
| pip install requests | |
| - name: Create translation script | |
| run: | | |
| cat > translate_simple.py << 'EOF' | |
| import os | |
| import re | |
| from googletrans import Translator | |
| def translate_readme(): | |
| # Read the original README | |
| with open('README.md', 'r', encoding='utf-8') as f: | |
| content = f.read() | |
| # Initialize translator | |
| translator = Translator() | |
| # Languages to translate to | |
| languages = [ | |
| ('en', 'English'), | |
| ('zh-CN', 'Chinese Simplified'), | |
| ('fr', 'French'), | |
| ('de', 'German'), | |
| ('ja', 'Japanese') | |
| ] | |
| for lang_code, lang_name in languages: | |
| try: | |
| if lang_code == 'en': | |
| # For English, copy the original content | |
| translated_content = content | |
| else: | |
| # Translate the content | |
| translated = translator.translate(content, dest=lang_code) | |
| translated_content = translated.text | |
| # Write translated file | |
| filename = f'README.{lang_code}.md' | |
| with open(filename, 'w', encoding='utf-8') as f: | |
| f.write(translated_content) | |
| print(f"✓ Translated to {lang_name} ({lang_code})") | |
| except Exception as e: | |
| print(f"✗ Failed to translate to {lang_name}: {e}") | |
| if __name__ == "__main__": | |
| translate_readme() | |
| EOF | |
| - name: Run translation | |
| run: python translate_simple.py | |
| - name: Create language selector update script | |
| run: | | |
| cat > update_language_selector.py << 'EOF' | |
| import re | |
| def update_readme_with_language_selector(): | |
| # Read the original README | |
| with open('README.md', 'r', encoding='utf-8') as f: | |
| content = f.read() | |
| # Check if language selector already exists | |
| if "多语言支持" in content or "Multi-language Support" in content: | |
| print("Language selector already exists, skipping...") | |
| return | |
| # Language selector content | |
| language_selector = ''' | |
| ## 🌐 多语言支持 / Multi-language Support | |
| <div align="center"> | |
| [](README.en.md) | |
| [](README.zh-CN.md) | |
| [](README.fr.md) | |
| [](README.de.md) | |
| [](README.ja.md) | |
| </div> | |
| --- | |
| ''' | |
| # Find the position after the first heading | |
| lines = content.split('\n') | |
| insert_position = 0 | |
| for i, line in enumerate(lines): | |
| if line.startswith('# ') and i > 0: | |
| insert_position = i + 1 | |
| break | |
| # Insert language selector | |
| if insert_position > 0: | |
| lines.insert(insert_position, language_selector) | |
| new_content = '\n'.join(lines) | |
| # Write updated content | |
| with open('README.md', 'w', encoding='utf-8') as f: | |
| f.write(new_content) | |
| print("✓ Added language selector to main README") | |
| else: | |
| print("Could not find suitable position to insert language selector") | |
| if __name__ == "__main__": | |
| update_readme_with_language_selector() | |
| EOF | |
| - name: Update main README with language selector | |
| run: python update_language_selector.py | |
| - name: Create Pull Request | |
| uses: peter-evans/create-pull-request@v5 | |
| with: | |
| token: ${{ secrets.GITHUB_TOKEN }} | |
| title: "docs: add multi-language README translations with language selector" | |
| body: | | |
| ## 自动翻译更新 | |
| 此PR包含以下语言的README翻译: | |
| - English (en) | |
| - Chinese Simplified (zh-CN) | |
| - French (fr) | |
| - German (de) | |
| - Japanese (ja) | |
| ### 翻译说明 | |
| - 使用Google Translate API自动翻译 | |
| - 保持原始Markdown格式 | |
| - 保留所有链接和图片 | |
| - 建议人工检查翻译质量 | |
| ### 生成的文件 | |
| - `README.en.md` - 英语版本 | |
| - `README.zh-CN.md` - 简体中文版本 | |
| - `README.fr.md` - 法语版本 | |
| - `README.de.md` - 德语版本 | |
| - `README.ja.md` - 日语版本 | |
| ### 新增功能 | |
| - 在主README文件中添加了语言选择器 | |
| - 用户可以通过徽章快速访问不同语言版本 | |
| - 支持5种语言的快速切换 | |
| --- | |
| *此PR由CI自动生成,当README.md文件更新时触发* | |
| branch: docs/translations | |
| delete-branch: true | |
| commit-message: "docs: add multi-language README translations with language selector [skip ci]" | |
| - name: Create summary | |
| run: | | |
| echo "## Translation Summary" >> $GITHUB_STEP_SUMMARY | |
| echo "" >> $GITHUB_STEP_SUMMARY | |
| echo "The following README translations were generated:" >> $GITHUB_STEP_SUMMARY | |
| echo "" >> $GITHUB_STEP_SUMMARY | |
| for file in README.*.md; do | |
| if [ -f "$file" ]; then | |
| lang=$(echo $file | sed 's/README\.\(.*\)\.md/\1/') | |
| echo "- $lang" >> $GITHUB_STEP_SUMMARY | |
| fi | |
| done | |
| echo "" >> $GITHUB_STEP_SUMMARY | |
| echo "✓ Language selector added to main README" >> $GITHUB_STEP_SUMMARY |