将文件上传到 项目 时,所有新资源都会从该文件中提取并存储在项目中。上传文件的格式不必是为项目设置的初始格式。如果提供了用于对资源进行分组的标记,则新键将应用这些标记。
某些格式(例如 Gettext)提供了其他有价值的元信息,例如注释、描述或有关复数形式的信息。此信息会在可能的情况下被提取,并与分配的资源一起存储,从而允许保存本地化文件中提供的所有有价值信息以供进一步使用。
有几种上传文件的方法:
通过 API 或 CLI 上传时,对于在单个文件中包含多个区域的文件格式(例如 Phrase Strings .JSON、.YAML、多语言 .XLSX/.CSV、.XLIFF、.TMX、Genesys JSON),文件中每个翻译的区域标识符都会根据语言名称与项目区域进行匹配,这与项目 选项卡上的配置完全一致。除非该确切字符串也是区域的配置名称,否则不会使用区域代码(例如“en-US”)进行此匹配。如果翻译的区域标识符与项目中的任何区域名称不匹配,其翻译将无法导入且不会有任何提示。
-
默认情况下,仅提取新内容,本地化项目中的任何现有键都不会被删除或更新;上传文件不会导致任何数据丢失。如果需要覆盖现有数据,请选择 选项,用本地化文件中的内容替换项目资源。现有翻译将被上传的本地化文件中的内容覆盖。
此选项也可在 API 中使用。
注释
为防止数据丢失,请确保在更改本地化文件并使用 选项再次上传之前,已从 Phrase 下载了最新更改。
-
输入一个唯一标识符(例如文件路径)作为上传的键名称的前缀。使用与项目或文件相关的有意义的前缀,以保持键名称的条理性。
例如,带有前缀
project_的导入键hello_world将生成键project_hello_world。翻译键前缀可确保键与现有键匹配,从而避免不同项目或文件之间的冲突。
此选项也可在 API 和 CLI 界面中使用。
-
添加新键并使用上传文件中的内容覆盖现有键。
-
仅当项目默认语言中的现有原文与上传的多语言文件中的原文匹配时,才更新译文。
-
如果需要更新上传文件中键的所有描述,请选择此选项。空描述将覆盖现有描述。描述可以包含译员所需的任何附加信息,并有助于在 编辑器 中识别各个键。
-
为了保持翻译条理清晰,请为键添加多个具有明确含义的标签。选择此选项可防止新键被自动添加上传标签。
-
选择此选项可在上传时自动为新键和已更新翻译的键添加标签。这将有助于区分新的、已更新的和旧的翻译 Strings,确保仅处理相关的键。
此选项也可在 API 中使用。
-
指定文件的编码(例如 UTF-8)或让系统自动选择(自动选择的编码可能会导致编码错误,可以通过撤消上传来回滚)。
-
-
可避免在更新翻译时再次验证非主要语言的翻译。
-
将所有上传的翻译视为已审校。当 高级审校工作流 已激活时,此选项可用。这表示密钥已准备好发送到生产环境。
-
会将所有已上传的翻译视为已验证。
-
要在 Strings 中上传文件,请按照以下步骤操作:
-
上传前,请确保文件已根据类型正确格式化。
-
在项目中,从菜单中选择上传文件。
页面随即打开。
-
点击选择文件,从目录中选择一个文件。
所选文件将添加到字段中。
-
为文件选择一个。
系统会根据文件类型优先显示建议的格式。
-
从下拉列表中为文件内容选择一种语言。
如果文件本身不包含此信息,请为内容创建一种新语言或使用现有语言。
-
(可选)提供要分配给新密钥的标记以及任何其他选项。
-
点击保存。
内容将被导入并转换为密钥。
-
上传失败
如果文件无法正确处理,系统会提供错误详细信息以帮助解决该错误。
-
上传成功
翻译文件成功处理后,系统会显示一个摘要页面,概述上传情况,并提供链接到下一步操作的按钮。点击上传标签以在编辑器中打开文件。
-
正在移除键
为防止在从本地化文件中移除键并再次上传时意外删除键,这些键不会被自动删除。
要移除这些键,请按照以下步骤操作:
未提及键是指未包含在当前上传中但仍存在于项目中的键。通过删除它们,所有未包含在上传文件中的键及相关翻译都将从项目中移除。
删除未提及键的限制为 100,000 个键。在超过此限制的项目中,选项不可用。
-
撤销上传
每次上传都会触发多个操作并可能修改项目内的大量数据,因此无法撤销上传。
要移除由上传文件(错误地)引入的键,请按照以下步骤操作:
该上传创建的所有键及相关翻译都将被移除。上传前已存在的键的翻译不会被移除。要移除单个翻译,请使用每个翻译的版本历史记录。
语言文件可以随时从项目中导出为任何受支持的 文件格式。
可以通过选择文件并点击 下载(多个文件)或语言的 更多选项 /下载 按钮,从任何项目的 选项卡下载文件。
在“下载”窗口中下载文件时会显示下载选项,其中包含“常规”、“高级”和“编码”选项卡。
选择不同的“文件格式”会显示不同的选项。有关更多详细信息,请参阅有关“特定文件格式”的相关文章。
(可选)使用“常规”选项卡中的“文件名称”字段来指定自定义导出文件名,或将其留空以生成系统定义名称。
默认情况下,可译的资源存储为键和值,而不是保留原始文件结构。这允许互换 格式,而不会被锁定在一种格式中,并可以使用 标记 进行灵活分组。
某些框架或设置需要多个原文文件,这也需要额外的配置。
保持独立文件
通常,请将每种语言的所有翻译保存在一个文件中。这使得资源下载更快、更稳健。翻译在项目中保持组织有序,因此不需要单独的小文件。
如果需要将本地化文件维护在单独的文件中,可以通过在上传时对键进行标记,并在将翻译后的键下载回原始文件时将标记用作参考,从而使用基于文件的工作流。键可以携带多个标记并包含在多个文件中,从而确保重用性和一致性。基于标记的工作流非常灵活,无需上传到项目即可重新组织翻译资源。
为所有文件中的键提供唯一的名称,以确保工作流顺畅。在基于键值的方法中,键在每个上下文中必须分配相同的值。某些框架允许在多个文件中使用非唯一的键。某些格式(例如 Symfony)支持消息领域。这些领域由文件名检测。键不会自动按基于文件名的领域进行范围限定,但这可以通过在文件内的键中使用唯一的领域前缀来解决。
CLI 配置示例
如果使用 CLI 或将项目与存储库(例如 GitHub、GitLab 或 Bitbucket)连接,请设置一个配置文件来管理上传和下载。
在此示例中,项目针对原文区域有几个语义命名的翻译文件。例如:accounts.en.yml、emails.en.yml 等。这些语义名称通过标记进行管理。
配置 .phrase.yml 以反映本地化项目中的文件组织,并通过在文件路径中包含标记占位符,将它们链接到 Strings 项目中的标记:
phrase:
access_token: "3d7e6598d955bfcab104c45c40af1b9459df5692ac4c28a17793"
project_id: "23485c9c5dfb15d85b32d9c5f3d2hl54"
file_format: yml
push:
sources:
- file: ./path/to/locales/<tag>.en.yml
params:
locale_id: "abcd1234cdef1234abcd1234cdef1234"
pull:
targets:
# accounts
- file: ./path/to/区域/accounts.<locale_name>.yml
params:
标记: accounts
# emails
- file: ./path/to/区域/emails.<locale_name>.yml
params:
标记: emails
参数标记也可以在 push 部分中使用,而不是使用 <tag> 占位符。
当运行 push 或从存储库触发同步时,该配置会根据键所属的文件创建带有标记的键。当运行 pull 或触发到存储库的导出时,它会根据标记将键分组到文件中。
产品、网站或应用程序被翻译成多种不同的语言,但在某些情况下,本地化不仅仅是选择语言,而是同一语言内的不同版本。
如果出现以下情况,则需要进一步区分:
-
产品在讲同一种语言的区域中具有不同的品牌。
-
产品被想要使用白标签解决方案的不同客户使用。
-
需要诸如简单、正式或非正式之类的语言变体。
本地化静态产品
如果产品已完全开发且很少更新,则可以在项目内存在该产品的单独版本。
本地化具有持续更新的项目
如果产品不断更新新内容(键),将这些更新应用于多个项目并保持同步会很困难。在项目中使用专用语言来维护它们。
语言代码遵循 ISO 标准(例如 en-US)不必是唯一的,因此可以在项目内创建同一语言的多个版本。通过使用唯一的语言名称来区分区域、客户或受众。
设置完成后,默认区域中任何新引入的键都会在其他语言中显示为未翻译,并相应地进行本地化。如果与客户及其译员合作,请专门分配他们,使其只能通过更新其个人资料或项目用户管理中的语言访问权限来编辑其语言版本。