ARTICLE · INTELLIGENCE

战地情报 · 详情页

来自尧图项目组的一线实战观察与深度解析

lazygit 如何在 Crowdin 上传英文源文件并更新翻译文件

lazygit 如何在 Crowdin 上传英文源文件并更新翻译文件 lazygit 如何在 Crowdin 上传英文源文件并更新翻译文件【免费下载链接】lazygitsimple terminal UI for git commands项目地址: https://gitcode.com/GitHub_Trending/la/lazygitlazygit 是一款终端里的 Git 图形界面工具。它所有面向用户的英文文案统一维护在 pkg/i18n/english.go 中而pkg/i18n/translations/下各语言的 JSON 文件由翻译平台 Crowdin 同步文档明确要求这些文件是机器生成的、不要手工编辑。本文覆盖 pkg/i18n/translations/README.md 中描述的两条操作在pkg/i18n/english.go新增或修改英文字符串后把生成的英文源文件上传到 Crowdin以及定期从 Crowdin 拉取最新翻译结果并写回仓库。准备条件上传流程需要能执行 Go 命令的环境命令是go run cmd/i18n/main.go在仓库根目录运行。更新流程需要jq1.7 或更高版本这是 scripts/update_language_files.sh 脚本注释中声明的依赖。Crowdin 项目的具体地址写在了 pkg/i18n/translations/README.md 和 CONTRIBUTING.md 中两处文档都指向同一个 lazygit 翻译项目。一个与两条流程都相关的前提各语言翻译文件由 Crowdin 维护并自动同步永远不要手工编辑它们——既不要为了补上你刚引入的 key也不要为了删除你刚移除的 key。删除英文字符串后残留的孤立 key 会由 Crowdin 自行清理而翻译文件中未知 key 在加载时会被忽略不产生影响见 AGENTS.md。上传英文源文件到 Crowdin英文文本的唯一维护位置是pkg/i18n/english.go所有字符串的增、改、删都在这个文件里完成。按仓库约定新增可翻译字符串时使用带名称的 Go 模板占位符如{{.selectedBranchName}}而不是fmt.Sprintf风格的%s这样译者能看出每个值的含义。完成英文字符串修改后按下面两步操作go run cmd/i18n/main.go这条命令会调用 cmd/i18n/main.go 中的程序把i18n.EnglishTranslationSet()序列化为 JSON在仓库根目录生成一个名为en.json的文件。注意这个文件是不纳入版本管理的它只用于上传。然后把生成的en.json上传到 Crowdin 项目的源文件sources files页面具体地址见 pkg/i18n/translations/README.md。上传完成后按文档要求把en.json从工作副本中删掉不要留在这个目录里。从 Crowdin 拉取并更新翻译文件当翻译在 Crowdin 上推进后需要把结果同步回仓库。整个流程分三步从 Crowdin 项目页下载翻译的 zip 文件解压 zip以解压后的目录为参数运行脚本scripts/update_language_files.sh download_dir其中download_dir替换为你解压后的目录路径。脚本参数个数不正确时会打印Usage: update_language_files.sh download_dir并以退出码 2 结束看到这条输出就说明参数没传对。脚本内部依次做了这些事见 scripts/update_language_files.sh把下载目录里的pt-PT改名为pt因为 lazygit 对巴西葡语和欧洲葡语都使用pt遍历下载目录下的每个语言目录用jq删除 JSON 中的空字符串即尚未翻译的条目后写入pkg/i18n/translations/语言名.json。文档说明 Crowdin 导出时有跳过空条目的选项但对该项目的 json 文件不生效所以由脚本用jq完成最后执行go generate ./...重新生成受翻译变更影响的自动生成文件例如快捷方式表。脚本使用set -e中途任何一步出错都会立即终止。结果确认与限制脚本正常运行的输出是Updating translations...和Regenerating auto-generated files...两条提示。运行结束后pkg/i18n/translations/下各语言的 JSON 会被本次下载的结果覆盖go generate ./...的产物也随之更新。pkg/i18n/translations/中的 JSON 文件均为机器生成后续修改英文文案只应回到pkg/i18n/english.go然后重复上传英文源文件一节的操作让 Crowdin 侧的文案基准保持最新。更新流程的硬性依赖是jq1.7 或更高版本低于此版本脚本无法满足要求。【免费下载链接】lazygitsimple terminal UI for git commands项目地址: https://gitcode.com/GitHub_Trending/la/lazygit创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
RELATED READING

延伸阅读

更多一线实战笔记与深度复盘,助您持续精进