翻译管理

本地化文件(字符串)

文本由 Phrase Language AI 从英语机器翻译而得。

本地化文件是可以在文本编辑器(如记事本或TextEdit)或程序员使用的各种增强文本编辑工具中打开和编辑的文本文件。这些文件通常遵循键值原则。这意味着它们包含与唯一ID(键)关联的文本片段(字符串)列表。因此,每个字符串都是一个的键(这个简单的例子是Java编程中使用的本地化文件格式):

  • key1 = value1

  • key2 = value2

  • ...

  • keyN = valueN

本地化文件的创建

本地化文件是具有简单结构的纯文本文件。它们可以手动创建,但通常由可用于不同开发环境的国际化工具或脚本自动生成。本地化文件的自动创建确保文件结构有效。

要创建本地化文件,所有可显示文本都在代码文件中被唯一ID替换。然后,文本字符串与其ID一起添加到本地化文件中。

本地化文件的使用

现在,代码中只包含键,而不是实际的文本字符串。当软件为用户生成视图时,这些键用于在本地化文件中查找关联的字符串。

如果应用程序设置为使用英语和西班牙语,则所有英语文本可能保存在名为English.txt的文件中,并且是默认文本位置。如果用户未选择语言,则所有文本将从此文件中提取以生成任何显示。如果用户选择西班牙语,则软件将重定向到Spanish.txt。许多语言可以与这样的系统一起使用。

优点是显示语言的选择不会影响代码。如果软件需要显示登录按钮,它可能需要与键 login_button 相关联的字符串,并且只需要知道在哪个文件中查找以检索给定语言的适当字符串。

字符串管理

作为一个基于键的翻译平台,Phrase 支持多种不同的资源文件类型。在 文件已上传 后, 及其相关的字符串值被提取。然后将键和字符串以标准化格式呈现给译员。译员专注于他们的任务,而无需担心本地化文件的确切格式。他们可以检查键,因为键本身可以提供重要的上下文,并指导他们做出正确的单词选择。

当所有字符串都被翻译后,文件将被下载。在此过程中,创建所需的本地化文件格式,以匹配原始源文件。

资源 文件格式

支持四种广泛类型的资源,所有这些资源本质上都是基于文本的,可以在文本编辑器中打开和检查。

电子表格

.XLSX 和 .CSV 文件被支持。这些格式在本地化方面是等效的,并包含键值对的行。键在一行中,而相应的值在相邻的行中。具体使用哪个列取决于应用程序,地方化人员需要配置 Phrase 以正确解释列。 ZenDesk .CSV 文件具有固定结构,因此此文件类型不需要进一步调整:

"标题","默认语言","默认文本","英语文本","变体状态"
"simple_key","German","Einfacher Schlüssel.","Simple key.","Current"

XML

XML是一种以<tags>形式提供元信息的格式。标签结构用于确定键及其对应值的位置,如下所示来自一个Android XML文件:

 <string name="simple_key">只是一个带有消息的键。</string>

两种标准的XML翻译格式是.TMX和.XLIFF。这些不仅在一种语言中保存键和值,还将源语言的值对与目标语言的对应值关联。这样的文件通常是双语的,如这个Symfony Xliff文件中的翻译单元所示:

<trans-unit id="simple_key" resname="simple_key">
 <source xml:lang="de-DE">Nur ein einfacher Schlüssel mit einer einfachen Nachricht.</source
<target xml:lang="en-GB">只是一个带有简单消息的简单键。</target>
</trans-unit>

QT程序使用的资源文件结构与这些标准化格式非常相似,但由于历史原因布局不同。

普通的键值列表

有一些资源文件仅包含简单的键值列表,如这个来自Ruby on Rails YAML的片段所示:

simple_key: 只是一个带有简单消息的简单键。

许多不同的编程语言或平台使用这样的格式,布局上有轻微的差异。

由于这些是单语文件,本地化程序需要维护这些文件的平行版本——一个用于源语言,其他用于目标语言。

Gettext生成包含附加信息的键值文件,例如描述性注释或复数变体:

# 这是这个键的惊人描述!
msgid "key_with_description"
msgid_plural ""
msgstr[0] "看看这个!这个键有一个描述!(至少在某些格式中)"
看看这个!这个键有 %s 个描述!(至少在某些格式中)"

有一些功能和布局相似的竞争格式,它们在相对轻微的方面有所不同。

关联数组

虽然其他格式需要自定义代码(解析器)来读取,但有些格式对开发者和本地化人员来说更容易。基于 .JSON(JavaScript)和 .PHP 数组的格式可以直接读取并映射到易于操作的常见代码结构(数组)中。数组可以很复杂,不同的应用程序生成自定义数组结构。

例如,go-i18n JSON 将键称为 id

{
    "id": "simple_key",
    "translation": "简单的键,简单的信息,太简单了。"
}

Angular 将键本身作为其数组中的键:

"simple_key": "我是一把简单的键,带有简单的信息。"。

由于这些轻微但至关重要的差异,广泛使用的 .JSON 和 .PHP 数组结构得到了支持。

这篇文章有帮助吗?

Sorry about that! In what way was it not helpful?

The article didn’t address my problem.
I couldn’t understand the article.
The feature doesn’t do what I need.
Other reason.

Note that feedback is provided anonymously so we aren't able to reply to questions.
If you'd like to ask a question, submit a request to our Support team.
Thank you for your feedback.