Starward 本地化贡献指南:文档翻译与应用内文本翻译完整工作流

📅 发布时间:2026/10/3 22:01:16
Starward 本地化贡献指南:文档翻译与应用内文本翻译完整工作流
桌面应用【免费下载链接】StarwardGame Launcher for miHoYo - 米家游戏启动器项目地址https://gitcode.com/gh_mirrors/st/Starward点击查看免费下载导读Starward米家游戏启动器是一个面向全球用户的桌面应用其界面文案、文档资料均采用多语言本地化体系维护。本文将基于仓库中的 Localization.zh-CN.md 官方指南系统讲解 Starward 的两大类本地化任务——仓库 Markdown 文档翻译与Crowdin 平台上的应用内文本翻译并结合仓库源码剖析其 resx 资源文件组织、语言切换机制与自动化构建流程让贡献者能按规范提交翻译、验证效果并规避测试风险。一、Starward 本地化体系概览Starward 需要翻译的内容分为两个独立部分二者工作流完全不同部分存放位置翻译方式提交方式仓库文档Markdowndocs/目录人工维护译文文件通过 pull request 提交应用内文本各项目的.resx资源文件Crowdin 平台在线翻译平台自动同步 自动构建目前 Starward 支持的应用语言在 src/Starward.Language/Localization.cs 中集中定义共 11 种Deutsch (de-DE)、English (en-US)、Italiano (it-IT)、日本語 (ja-JP)、 한국어 (ko-KR)、Русский (ru-RU)、ภาษาไทย (th-TH)、Tiếng Việt (vi-VN)、 简体中文 (zh-CN)、繁體中文 - 香港地區 (zh-HK)、繁體中文 - 台灣地區 (zh-TW)这套语言列表会被设置页面的语言选择器直接读取用于构建下拉选项详见下文源码分析。二、文档翻译Markdown 文件1. 文件命名与存放规范所有翻译后的 Markdown 文件必须存放在docs/目录下并在文件名中附加语言-地区标签。例如原文件名Localization.md简体中文译文Localization.zh-CN.md越南语译文Localization.vi-VN.md当前仓库中已经存在的译文包括 Localization.zh-CN.md、Localization.vi-VN.md、Localization.ja-JP.mdREADME 系列、README.ru-RU.md、README.th-TH.md 等均遵循这一文件名.语言-地区.md的命名模式。2. 在原文件头部添加译文链接翻译完成后需要在原文件的开头添加指向译文的链接方便读者在不同语言版本之间跳转。以 Localization.md 为例其首行即为语言切换导航English | [简体中文](https://link.gitcode.com/i/1855f0369af16a51fe1b591355e41d9e) | [Tiếng Việt](https://link.gitcode.com/i/6341ab74a67d4fb753cf805c006fa00f)对应地Localization.zh-CN.md 也应当维护同样的语言链接行注意译文内部链接应转换为以仓库根目录为起点的相对路径确保链接可解析。3. 图片本地化的处理方式部分文档中包含图片。为了控制仓库体积项目不允许在仓库中大量添加图片文件因此在本地化文档图片时建议在项目 issue 区发起讨论并上传图片将文档中的图片链接替换为对应的新链接。4. 提交流程译文完成并通过本地检查后通过pull request提交回仓库由维护者审阅合并。整个文档翻译流程不依赖任何自动化平台属于纯人工协作。三、应用内文本翻译Crowdin 平台1. 翻译入口与权限Starward 的应用内文本翻译托管在Crowdin 平台上任何贡献者都可以随时进入项目页面修改文本内容。如果希望新增一种翻译语言当前 11 种之外的语言需要先在 issue 区提出请求由维护者配置好 Crowdin 语言后翻译工作才能开始。2. 自动化同步与构建验证应用内翻译的流转链路是Crowdin 修改文本 → 同步至 l10n/main 分支约 1 小时内→ 触发自动构建 → 下载 Artifacts 验证具体来说在 Crowdin 中做出的修改会在约一个小时内自动同步到仓库的l10n/main分支同步会触发持续集成流水线中的自动构建在 CI 流水线中查找名为New Crowdin updates的最新工作流下载其编译产物Artifacts即可在本地运行该版本实时检查翻译文本在应用内的显示效果。3. ⚠️ 测试版本的重要安全提示开发中的版本可能损坏您的个人数据库StarwardDatabase.db。官方指南明确要求测试前务必做好数据库备份该版本不应长时间使用。这是因为l10n/main分支的构建属于未经完整测试的开发版本涉及数据库结构变更时可能造成不可逆损坏翻译验证完毕后应及时换回正式版本。4. 英文源文本的修改方式由于 Crowdin 上无法自由修改源文本英文如果发现英文文本存在错误或需要改进请通过pull request将修改提交到仓库而不是在 Crowdin 中直接改动源字符串。四、应用内本地化的仓库实现细节理解应用内文本的底层实现有助于翻译时把握语言键的语义边界。以下内容可从仓库源码得到印证。1. resx 资源文件的组织Starward 的应用内文本按项目拆分维护在多套.resx资源文件中每套资源文件都有配套的本地化变体主应用 UI 文本位于 src/Starward.Language/Lang.resx源语言及其变体Lang.de-DE.resx、Lang.zh-CN.resx、Lang.zh-HK.resx、Lang.zh-TW.resx等核心库文本位于 src/Starward.Core/CoreLang.resx 及对应变体安装器文本位于 src/Starward.Setup/Locale/Lang.resx 及对应变体。每个.resx文件都是标准 XML 格式条目结构形如data nameSettingPage_FollowSystem value跟随系统/value /data其中name是程序内引用的语言键value是该语言下的显示文本。翻译时只修改value节点严禁改动name键名否则会导致运行时找不到资源。2. Crowdin 同步的配置依据仓库根目录的 crowdin.yml 定义了资源文件的同步规则files: - source: /**/*.resx ignore: - /**/*.*.resx translation: /%original_path%/%file_name%.%locale%.resxsource将所有.resx文件作为翻译源ignore排除已经带语言后缀的本地化文件如Lang.zh-CN.resx避免重复翻译translation规定译文文件命名为原文件名.语言代码.resx即 Crowdin 生成的Lang.zh-CN.resx等文件会回填到对应的源目录中。这正是 Crowdin 修改能在一小时内同步进l10n/main分支并触发自动构建的配置基础。3. 强类型资源类与语言列表src/Starward.Language/Lang.Designer.cs 是由工具自动生成的强类型资源类它通过Lang.ResourceManager.GetString(nameof(Lang.SettingPage_FollowSystem), culture)这样的方式在编译期提供类型安全的资源访问。翻译新增的语言键时.Designer.cs会随.resx重新生成无需手工维护。而前文提到的 11 种语言列表则定义在 src/Starward.Language/Localization.cs 的LanguageList集合中格式为(Title, LangCode)元组被设置页直接枚举渲染。4. 语言切换的运行时机制在 src/Starward/Features/Setting/GeneralSetting.xaml.cs 中可以看到完整的语言切换实现InitializeLanguageSelector()读取当前配置AppConfig.Language先插入一个「跟随系统」选项Tag为空字符串再遍历Localization.LanguageList填充其余语言项并以当前语言高亮选中ComboBox_Language_SelectionChanged()在用户选择语言后调用AppConfig.SetLanguage(lang)随后调用this.Bindings.Update()刷新当前页面的数据绑定通过WeakReferenceMessenger.Default.Send(new LanguageChangedMessage())广播语言变更消息消息类型定义在 src/Starward/Features/Setting/LanguageChangedMessage.cs通知全局各界面同步刷新调用AppConfig.SaveConfiguration()持久化配置。语言配置最终写入应用的配置文件AppConfig.Configuration.cs中以Language行存储加载时通过正则Language(.)解析应用重启后依然生效。5. 语言代码归一化翻译贡献者提交的语言代码在进入请求链路前会经过 src/Starward.Core/LanguageUtil.cs 中的FilterLanguage归一化处理例如zh-hk/zh-mo/zh-tw统一映射为zh-twzh-cn/zh-sg统一映射为zh-cn其余语言按两位前缀归一到de-de、ja-jp等规范形式无法识别的语言回退为en-us。这保证了不同地区标记如zh-HK与zh-TW在请求 API 时使用一致的取值。五、给本地化贡献者的实践建议综合官方指南与源码实现一份完整的本地化贡献路径可以总结为确定目标类型文档翻译走 PR 流程应用内文本翻译走 Crowdin 流程文档翻译在docs/下新建原文件名.语言-地区.md翻译后在原文件头部加语言切换链接涉及图片时按 issue 流程处理最后提交 pull request应用内翻译在 Crowdin 中修改对应语言文件的value文本等待约一小时内自动同步到l10n/main分支验证效果下载New Crowdin updates工作流的 Artifacts 运行测试务必先备份StarwardDatabase.db不要长时间使用开发版修正源文本英文源文本的问题不通过 Crowdin 修改而是直接向仓库提交 pull request新增语言先在 issue 区提出申请待平台配置完成后开始翻译。遵循以上流程每位贡献者都能在保证数据库安全的前提下让 Starward 更快地覆盖更多语言用户。赞分享桌面应用【免费下载链接】StarwardGame Launcher for miHoYo - 米家游戏启动器项目地址https://gitcode.com/gh_mirrors/st/Starward点击查看免费下载相关推荐Starward 本地化贡献指南文档翻译与应用内文本多语言工作流全解析Starward 本地化贡献指南文档翻译与应用内文本多语言工作流全解析 Starward 作为一款面向全球玩家的米家游戏启动器其多语言能力来自一套清晰的两段桌面应用Joplin 本地化Localisation指南应用翻译与文档翻译的完整工作流Joplin 本地化Localisation指南应用翻译与文档翻译的完整工作流 本篇指南以 Joplin 仓库中的 readme/dev/localisa知识管理跨平台插件系统Astro Storefront与Google Maps集成如何在地图上显示客户地址Astro Storefront与Google Maps集成如何在地图上显示客户地址 Astro Storefront是一个基于Astro框架构建的电子商务解上一篇Fireworks Tech Graph 贡献指南从本地检查流水线到几何契约的完整实践下一篇免费开源视频压缩工具 CompressO 实测229MB 视频一键瘦身 93.91%创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考