从国际化开始¶
有一个项目,想把它翻译成多种语言?本指南将帮助你做到这一点。其中展示了几种典型情况,但大多数示例都是通用的,也可以用于其他情景。
在翻译任何软件之前,要认识到世界各处的语言真正不同,而您不应该根据自己的经验做出任何假设。对于多数语言,如果尝试从翻译的段落中连接出句子,看起来会很奇怪。应该正常滴处理复数形式,因为很多语言对此具有复杂的规则,最终使用的国际化框架应该支持它。
最后但同样重要的是,有时可能需要在翻译的字符串中添加一些上下文。想象一下译者要翻译字符串 Sun。没有上下文的话多数人会将它翻译为离我们最近的恒星,但实际上它可能被用作星期日的缩写。
选择国际化框架¶
选择你平台上的标准格式,尽量避免重复发明轮子,避免通过创建你自己的框架来处理本地化问题。Weblate 支持大多数广泛使用的框架,更多信息请参见 本地化文件格式(特别是 翻译类型功能)。
我们对一些平台的个人推荐在下面的表格中。这基于我们的经验,但这无法覆盖所有的使用情况,因此做选择时总是要考虑您的环境。
平台 |
推荐的格式 |
|---|---|
Android |
|
iOS |
|
Qt |
|
Python |
|
PHP |
|
C/C++ |
|
C# |
|
Perl |
|
Ruby |
|
Web 扩展 |
|
Java |
|
JavaScript |
一些格式更具体的工作流程在后面的章节中描述:
教导开发者正确理解国际化¶
软件国际化不只是能够翻译字符串,还有让整个软件对来自另一个地区的用户看上去像本土软件一样。这包括日期或数字格式、货币显示、或以正确方向输入文本等。多数软件框架对此支持良好,因而对于所有这些方面请按照它们的操作指南行事。
字符串翻译也不是一项简单任务。对于字幕或按钮标签等短字符串尤其如此。不同语言有不同规则,预期相同字符串的翻译总是一成不变是不合理的。很多情况下如何翻译可能并不清晰,区分一个词是动词还是名词更是有挑战性。
所有开发者都应理解这些并唯一地标识用于不同范围的字符串。比如,表示"无用户“的 None 的翻译可能不同于表示"无项目”的 None 的翻译。用不同的键或上下文来为译者区分这些术语。你可以在 Weblate 中提供额外的上下文,比如 字符串的可视化上下文 或 解释。
参见