从国际化开始

有个项目,并想要将其翻译为几种语言?这个向导会帮您进行。几种典型的情况展示出来,而多数示例是通用的,并且也可以用于其它情景。

在翻译任何软件之前,要认识到世界各处的语言真正不同,而您不应该根据自己的经验做出任何假设。对于多数语言,如果尝试从翻译的段落中连接出句子,看起来会很奇怪。应该正常滴处理复数形式,因为很多语言对此具有复杂的规则,最终使用的国际化框架应该支持它。

最后但同样重要的是,有时可能需要在翻译的字符串中添加一些上下文。想象一下翻译者要翻译字符串 Sun。没有上下文的话多数人会将它翻译为离我们最近的恒星,但实际上它可能被用作星期日的缩写。

选择国际化框架

选择你平台上的标准格式,尽量避免重复造轮子,避免通过创建你自己的框架来处理本地化问题。Weblate 支持大多数广泛使用的框架,更多信息请参见 支持的文件格式 (特别是 翻译类型功能 )。

我们对一些平台的个人推荐在下面的表格中。这基于我们的经验,但这无法覆盖所有的使用情况,因此做选择时总是要考虑您的环境。

平台

推荐的格式

Android

Android 字符串资源

iOS

苹果 iOS 字符串

Qt

Qt Linguist .ts

Python

GNU gettext

PHP

GNU gettext 1

C/C++

GNU gettext

C#

.XML resource files

Perl

GNU gettext

Ruby

Ruby YAML files

Web 扩展

WebExtension JSON

Java

XLIFF 2

JavaScript

JSON i18next files 3

1

PHP 对 Gettext 的本地支持故障比较多,并且通常缺乏 Windows 构建,推荐替代使用第三方库 motranslator

2

如果不需要复数的话还可以使用 Java 属性

3

如果不需要复数的话还可以使用简单的 JSON 文件

一些格式更具体的工作流程在后面的章节中描述: