GTweak 多语言本地化:区域变体配置实操,一次配齐
【免费下载链接】GTweakPortable Tool for an Ideal Windows Setup项目地址: https://gitcode.com/GitHub_Trending/gt/GTweak
新增一门语言最容易翻车的,是三个不起眼的小动作:译稿里手滑把键名btn_change改成了btn-Change,文件夹写成了pt-br而不是pt-BR,翻译条数和英文基准对不上。前两个不会报错,只是运行时悄悄回退成英文,排查起来最磨人。GTweak 的国际化架构里,有三处设计专门把这些坑压掉了。
先看清三处高频翻车点
一句话记住:键名、文件夹大小写、条数对齐,是本地化验收的三块绊脚石。
用目录结构隔离 14 种语言
GTweak 把全部界面文案收敛在一个目录下,按语言拆文件夹:
.Source/GTweak/Languages/ ├── LanguageCatalog.xaml # 语言注册表 ├── en/Localize.xaml # 英文基准,500+ 条键值 ├── pt-BR/Localize.xaml ├── zh-CN/Localize.xaml ├── zh-TW/Localize.xaml └── … 其余 10 个语言文件夹设计意图很直接:一语言一文件夹、一文件夹一文件。英文文件是参照标准,pt-BR和zh-TW这类变体各占一格,互不覆盖;新增一门语言,成本就是复制一个文件夹、译完一份文件、在注册表里加一行。
| 承担的角色 | 在做什么 | 位置 |
|---|---|---|
| 基准文件 | 定义键名集合,其余所有语言以此对齐 | en/Localize.xaml |
| 语言注册表 | 登记每门语言在界面里的显示名,语言切换列表由它生成 | LanguageCatalog.xaml |
| 译文文件 | 存放具体文案,键名与基准逐条一致,只允许改值 | zh-CN/Localize.xaml |
一句话记住:目录把语言隔离开后,新增语言的边际成本被压到最低。
把 BCP-47 区域变体命名一次讲清
区域变体命名规范是最容易翻车的环节。一个典型场景:新人建了个pt-br文件夹,程序按系统区域pt-BR去找,找不到就静默回退英文——功能"没坏",只是没人看见。
BCP-47 风格的核心规则就三条:语言代码全小写、地区代码全大写、连字符连接。GTweak 在这之上还有一层细节——文件夹名和注册表 key 用的是两套写法:
| 文件夹名(照抄 Windows 区域设置) | 注册表 key(全小写 + 下划线) |
|---|---|
pt-BR | pt_br |
zh-CN | zh_cn |
zh-TW | zh_tw |
注册表里显示名要写原生写法:pt_br条目 是Português (BR),zh_cn条目 是简体中文 (CN)。文件头部的注释(LanguageCatalog.xaml)也反复强调这一点。
记法给一个:目录名跟着 Windows 区域设置抄(横线 + 大写地区),注册表 key 一律小写加下划线。
一句话记住:同一种语言有两套命名——路径横线大写地区,key 全小写下划线,别混用。
别碰 x:Key,那是接口契约
每条文案的形如:
<v:String x:Key="btn_change">Change</v:String>x:Key就是程序与界面之间的接口契约:界面代码拿着 key 去资源字典取值,值换成什么语言都行。改 key 等于改接口签名——某个按钮立刻拿到空值或回退显示原始英文,而且这种断链是散的,一次坏一个控件,很难从症状反查到键名上。
所以翻译时只做一件事:改引号里的值,键名、#region分区注释一律原样保留;提交前数一遍条数,与英文基准对齐。
一句话记住:键名是接口,值才是文案。
四步工作流跑完翻译同步
14 种语言要长期不掉队,靠人手对不齐。仓库里的 Tools/LocalizeSync.cmd 是配套同步脚本,正确用法不是"跑一下",而是按顺序走完四步:
- 翻译完成:对照英文基准把本语言的键值全部译完,新增键一条不漏。这一步是源头,源头漏了后面全是白跑。
- DryRun 预览:先跑只读模式,拿到逐语言的新增 / 删除键差异报告。这一步用来在动手写盘之前确认差异范围,防止脚本按旧基准把新译文覆盖掉。
- 正式执行:确认报告符合预期后再写入,按基准文件重排键的顺序和分区。此时结构对齐已经完成,手工排格式可以省了。
- Backup 兜底:写前生成备份,误操作时一键回滚。这一步不产生任何日常收益,但决定出事那天你能不能活下来。
一句话记住:先预览、再执行、备份兜底,四步走完才算一次安全的同步。
三步改造:把这套落地到桌面项目
如果你的桌面项目也想按这个思路落地,按下面三步改,每步都有可判断的验收标准。
- 收敛文案到单一目录:所有界面文案挪进一个 Languages 目录,定一份基准文件加一张语言注册表。验收标准:改任意一句界面文案只动一个文件,不需要编译逻辑代码。
- 命名按 BCP-47 变体走:文件夹名与系统区域设置完全一致,注册表 key 全小写下划线,显示名用原生写法。验收标准:把系统区域切到
pt-BR或zh-CN,程序能找到对应目录,且注册表里不存在混用横线的 key。 - 加一个同步校验脚本:以基准文件为准,输出各语言的新增 / 删除键差异报告,支持只读预览与写前备份。验收标准:故意改错一个键名,脚本在预览阶段就能报出来,而不是等到运行时界面回退英文。
文档层同样可以顺手做掉:根目录为每种语言拆一份 README,比如 README-pt-br.md 与 README-zh-cn.md——注意这里是全小写加横线,又和界面语言的命名规则不同,别复制粘贴。
一句话记住:目录收敛、命名规范、脚本校验,三步做完,多语言维护就从人盯人变成了流程。
【免费下载链接】GTweakPortable Tool for an Ideal Windows Setup项目地址: https://gitcode.com/GitHub_Trending/gt/GTweak
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考