本文档描述了 Shadowsocks Windows 的国际化系统。该系统使应用程序能够根据用户的系统区域设置显示多种语言的文本。它涵盖了翻译机制、翻译文件结构以及如何添加或修改翻译。
Shadowsocks Windows 客户端使用一个简单而有效的国际化系统,它从 CSV 文件加载翻译并将其应用于用户界面元素。该系统自动检测用户的系统区域设置并选择合适的翻译。
来源:shadowsocks-csharp/Controller/I18N.cs11-123
翻译系统使用一个 CSV 文件(i18n.csv),其结构如下
en、ru-RU、zh-CN)# 开头的行被视为注释以下是翻译文件中的一个示例
| en | ru-RU | zh-CN | zh-TW | ja | ko | fr |
|---|---|---|---|---|---|---|
| 系统代理 | 系统代理 | 系统代理 | 系统代理 | 系统代理 | 系统代理 | 系统代理 |
| 禁用 | 禁用 | 禁用 | 禁用 | 禁用 | 禁用 | 禁用 |
| PAC | PAC 模式 | PAC 模式 | PAC 模式 | PAC 模式 | PAC 模式 | PAC |
文件应以 UTF-8 带 BOM 编码保存,以支持所有国际字符并确保其可以在 Excel 中编辑。
来源:shadowsocks-csharp/Data/i18n.csv1-155
来源:shadowsocks-csharp/Controller/I18N.cs21-95
I18N 类是一个静态工具类,用于管理所有国际化功能。
来源:shadowsocks-csharp/Controller/I18N.cs13-122
系统使用以下逻辑选择合适的语言:
CultureInfo.CurrentCulture.Name)这种方法确保用户获得其区域设置的最佳翻译。
来源:shadowsocks-csharp/Controller/I18N.cs30-60
默认的 i18n.csv 文件包含以下语言的翻译:
来源:shadowsocks-csharp/Data/i18n.csv1
在应用程序代码中使用翻译
表单和菜单可以使用辅助方法自动翻译。
单个字符串可以使用 GetString 方法进行翻译。
来源:shadowsocks-csharp/Controller/I18N.cs97-121
添加新语言或更新现有翻译
i18n.csv 文件对于处理源代码的贡献者,翻译也可以在嵌入式资源文件中更新。
如果翻译未正确显示:
检查应用程序日志中有关当前语言的消息
当前语言为:[locale]正在为 [locale] 使用 [language] 翻译未找到 [locale] 的翻译验证 i18n.csv 文件格式正确并以 UTF-8 带 BOM 编码。
确保键字符串与代码中的内容完全匹配(包括空格)。
国际化系统已集成到整个应用程序中。一些值得注意的例子:
来源:shadowsocks-csharp/Controller/Service/PACServer.cs169-176
Shadowsocks Windows 中的国际化系统旨在简单而有效。它提供了一种直接的方法,可以将应用程序翻译成多种语言,同时最大限度地减少开销。通过使用基于 CSV 的方法,它使非开发人员也能够方便地贡献翻译。