Implementing UI translation in SumatraPDF, a C++ Windows application
8 months ago
- #win32
- #software-localization
- #open-source
- SumatraPDF是一款免费、开源的PDF/电子书/漫画阅读器,支持Windows平台,其用户界面已翻译为72种语言。
- 翻译系统通过在源代码文件中使用_TRA()或_TRN()宏标记字符串,随后通过脚本提取这些待翻译内容。
- 翻译工作通过名为AppTranslator的定制网页应用管理,该应用设计简洁高效,无需数据库支持。
- C++实现方案将翻译文本直接嵌入可执行文件,采用线性扫描方式进行查找,这种简单机制完全满足实际需求。
- 针对不同语言字符串长度差异,使用DialogSizer工具自动调整对话框尺寸。
- 该系统从最初人工邮件提交翻译逐步演变为基于网页的解决方案,未来考虑迁移至GitHub的翻译工作流。
- 作者评估过传统的.rc文件分语言方案、XML格式及GNU gettext等方案,最终因其效率或易用性不足而放弃采用。