Telegram 官方客户端几乎每周都会推出新版本,修复漏洞、增加功能,这让汉化爱好者又爱又恨。手动下载安装包、解包、替换文本、重新打包,一套流程下来少说也要半小时,遇上频繁更新更是苦不堪言。有没有办法让电脑自动完成这些重复劳动?当然有,GitHub Actions 就是你的免费私人助理。本文将带你从零搭建一个自动构建 Telegram 汉化包的流水线,让最新版汉化包每天自动生成,你只需醒来后下载即可。
为什么需要自动构建?
Telegram 的更新节奏快,官方语言包文件也会随之调整。手动构建汉化包不仅耗时,还容易出错——漏掉新增字符串、编码错误、格式偏差,任何一个细节都可能导致汉化失败。而在 GitHub Actions 上运行构建脚本,可以定时拉取官方最新资源,自动合并汉化补丁,输出标准的 tl_strings.xml 文件,还能自动发布到 Release 或作为构建产物供下载。这样既保证了汉化包与官方版本同步,又避免了反复手工操作。
准备工作:仓库与权限
在开始之前,你需要准备一个 GitHub 仓库。仓库中应包含:
- 汉化补丁文件(如 diff 格式,描述中英文字符串的替换规则)。
- 一个用于构建的脚本,可以手动运行,也可以被 Actions 调用。
- 一个 GitHub Personal Access Token(可选,用于自动创建 Release)。
建议将汉化补丁按版本组织,例如放在 patches/ 目录下,以包含版本号的文件名区分,便于回溯。
编写 GitHub Actions 工作流
在仓库根目录创建 .github/workflows/build-hanhua.yml,这是流水线的核心配置。一个典型的工作流包含触发条件、任务定义和步骤。
name: Build Telegram Hanhua
on:
schedule:
- cron: '0 0 * * *' # 每天 UTC 0 点运行
workflow_dispatch: # 允许手动触发
jobs:
build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Set up Python
uses: actions/setup-python@v5
with:
python-version: '3.12'
- name: Install dependencies
run: pip install requests
- name: Run build script
run: python build_hanhua.py
- name: Upload artifact
uses: actions/upload-artifact@v4
with:
name: telegram-hanhua
path: output/*.xml
这段配置会每天定时执行一次,也可以手动触发。构建脚本负责从 Telegram 官方源拉取最新语言文件,应用汉化补丁,并打包输出。
核心构建脚本解析
构建脚本是整个流水线的灵魂。这里以 Python 为例说明关键步骤:
- 获取官方源语言文件:通过官方 API 或直接下载
en_strings.xml。 - 加载汉化补丁:读取你维护的翻译映射表,覆盖官方字符串。
- 生成新语言包:将替换后的内容写入
zh_CN_strings.xml,并保留原格式。 - 版本检测:比较当前构建产物与上次 Release 的版本,若一致则跳过,避免无效运行。
值得注意的是,Telegram 的字符串文件格式可能随版本变化,因此脚本需要具备容错能力,例如对缺失键值设置默认值,或记录未翻译的新字符串供后续处理。
自动发布到 Release
如果希望构建后直接发布到 GitHub Releases,可以在工作流中追加步骤:
- name: Create Release
uses: softprops/action-gh-release@v2
with:
files: output/*.xml
tag_name: v${{ env.HANHUA_VERSION }}
token: ${{ secrets.GITHUB_TOKEN }}
这样每次构建成功后,都会自动生成一个带有语言包文件的 Release,你只需前往 Releases 页面下载最新即可。
定时触发与频率控制
GitHub Actions 的 schedule 事件最低支持每小时一次,但为避免浪费资源,建议每天或每周执行一次。你可以根据 Telegram 的更新节奏调整 cron 表达式。另外,可以通过判断当前版本是否已构建来提前退出,从而减少不必要的 GitHub Actions 分钟数消耗。
常见问题与解决方案
- 拉取官方文件失败:可能是网络问题或官方接口变更,可在工作流中添加 retry 逻辑,或更新脚本中的 URL。
- 补丁冲突:官方更新了某些字符串的 key,导致补丁无法匹配。建议定期检查补丁文件,并保持脚本输出详细的冲突日志。
- Action 运行超时:如果构建逻辑复杂,可调整超时时间,或优化脚本避免不必要的操作。
总结
通过 GitHub Actions,你几乎不需要人工干预,就能每天获得与官方同步的 Telegram 汉化包。本文介绍的方法不仅仅适用于 Telegram,也可以推广到其他需要频繁汉化的应用。自动化不仅解放了双手,更让汉化工作变得可持续、可维护。快动手试试吧,让机器人替你打工!