CLI

创建 CLI 配置文件 (Strings)

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

前提条件

  • API 访问令牌,具有 读写 范围

  • 在项目设置的 API 选项卡中显示的 Strings 项目 ID

  • 基本的 YAML 知识,包括缩进

  • 如果存储库将在 CI 中运行 phrase pushphrase pull,则需要 Git 的读写权限

要自动创建配置文件,请参照以下步骤:

  1. 在命令行中,输入 phrase init 以创建 .phrase.yml 文件。

    配置向导在 CLI 中启动。

  2. 提供:

    • 访问令牌

      粘贴或按 回车 以使用 $PHRASE_ACCESS_TOKEN

    • Strings 项目 ID(例如 abcdef1234567890abcdef1234567890

    • 区域文件格式(例如 json, rails_yaml, ios_strings)

    • 本地路径

      项目代码库中区域文件的通配符或精确路径(例如 config/locales/*.json

在当前目录中创建一个基本的 .phrase.yml 文件。

提示

提供标志以完全跳过向导,例如 phrase init --access_token=$PHRASE_ACCESS_TOKEN --project_id=... --file_format=ios_strings --path='ios/*.strings'

如果使用手动创建或复制的配置文件,请将其放在以下位置之一:

  • 当前工作目录(pwd),在此目录中调用 CLI 客户端。

  • 当前用户的主页目录(Unix 为 $HOME,Windows 为 $HomePath)。

  • PHRASEAPP_CONFIG 环境变量中指定的路径。

  • 通过 --config 标记(例如 /some/path/to/phrase.yml)到达配置文件的路径。

CLI 选项概述

配置文件示例。

全局设置 

类型

必需

说明

phrase.access_token 

字符串

个人 访问令牌

phrase.project_id 

字符串

在 Strings 项目设置中显示的公共项目 ID。

phrase.file_format 

字符串

默认区域 文件格式(API 扩展)。

phrase.locale_mapping

对象

将 Phrase 区域 ID 映射到自定义名称,以便在文件路径中使用 <locale_name> 占位符。这对于具有非标准命名约定的平台(如 Android)非常有用。

如果映射中未指定区域,则默认使用其标准短语区域名称。

推送:源

类型

必需

说明

push.sources[].file 

路径

相对路径到要推送的文件,例如 ./path/to/file/<locale_code>.json。支持 <locale_name><locale_code><tags>

push.sources[].project_id 

字符串

覆盖此特定文件源的全局 project_id。在从同一配置文件推送文件到多个短语项目时非常有用。 

推送:参数

参数

类型

默认

说明

file_format 

字符串

头部

覆盖此源的文件格式。

locale_id 

字符串

区域名称(例如 en-US)或公共区域ID。

tags 

字符串

新键的逗号分隔标签。

update_translations 

布尔值

false 

使用文件内容更新现有翻译。

update_translation_keys 

布尔值

true 

在此传递 false 以防止创建新键并更新现有键。

update_descriptions 

布尔值

false 

更新键描述;空描述将覆盖现有描述。

skip_upload_tags 

布尔值

false 

上传的标签未创建。

skip_unverification 

布尔值

false 

更新的翻译未经过验证。

file_encoding 

字符串

文件编码:UTF-8UTF-16UTF-16BEUTF-16LEISO-8859-1

locale_mapping 

对象

(仅限Excel/CSV)将区域代码映射到列名,例如{"en": "C", "de": "D"}以解析翻译。这与用于文件路径的顶层locale_mapping不同。

autotranslate 

布尔值

false 

自动获取上传语言的翻译。

mark_reviewed 

布尔值

false 

将导入的翻译标记为已审校(高级审校工作流必须启用)。

推送:格式选项

CLI配置中支持所有可用的格式选项。请参见示例配置文件以获取示例。

拉取:目标

类型

必需

说明

pull.targets[].file 

路径

拉取区域文件的相对路径,例如./Radio.de/<locale_code>.lproj/Localizable.strings

pull.targets[].project_id 

字符串

覆盖此特定拉取目标的全局project_id。启用使用相同配置文件从多个Phrase项目拉取翻译。

拉取:参数

参数

类型

默认

说明

file_format 

字符串

必须是字符串

locale_id 

字符串

区域名称(例如 en-US)或公共区域ID。

tags 

字符串

以逗号分隔的标签,用于筛选要拉取的键。

include_empty_translations 

布尔值

false 

包括没有任何翻译的键。

exclude_empty_zero_forms 

布尔值

false 

在空时排除零形式复数。

include_translated_keys 

布尔值

true 

包括已经有翻译的键。

keep_notranslate_tags 

布尔值

false 

在输出中保留 [NOTRANSLATE] 标签。

编码 

字符串

文件编码:UTF-8UTF-16UTF-16BEUTF-16LEISO-8859-1

include_unverified_translations 

布尔值

true 

如果 false,排除未验证的翻译。

use_last_reviewed_version 

布尔值

false 

如果 true,使用最后审校的版本(需要高级审校工作流)。

fallback_locale_id 

字符串

用于缺失翻译的后备区域。

拉取:格式选项

CLI配置中支持所有可用的格式选项。请参见示例配置文件以获取示例。

多个配置

在单一代码库中,每个包中放置一个配置文件,并从相应的子文件夹运行 CLI,或使用 --config 选项将 CI 作业指向不同的配置文件。

Git 集成

GitLab:

  • .phrase.yml 配置文件必须存在于存储库中。该文件定义了从存储库导入 (pull) 或导出 (push) 哪些文件。

  • 存储库需要读取和写入权限。

  • 配置文件定义不正确可能会导致错误。确保文件至少包含一个 push 和一个 pull 目标、正确的文件格式以及正确的 update_translations 参数。

  • 使用 GitLab 9.5 或更高版本以确保 API 兼容性。

GitHub:

  • .phrase.yml 配置文件必须存在于存储库中。该文件定义了从存储库导入 (pull) 或导出 (push) 哪些文件。

  • 存储库需要读取和写入权限。

  • 配置文件定义不正确可能会导致错误。确保文件至少包含一个 push 和一个 pull 目标、正确的文件格式以及正确的 update_translations 参数。

  • 存储库范围内的 GitHub 访问令牌(如果与公共存储库同步,则为 public_repo)。

  • 如果在 GitHub 中启用了 SSO,也必须为访问令牌启用。

  • 不能保护 phrase_translations 分支。

  • 确保存储库设置不需要签名提交。

BitBucket:

  • .phrase.yml 配置文件必须存在于存储库中。该文件定义了从存储库导入 (pull) 或导出 (push) 哪些文件。

  • 存储库需要读取和写入权限。

  • 配置文件定义不正确可能会导致错误。确保文件至少包含一个 push 和一个 pull 目标、正确的文件格式以及正确的 update_translations 参数。 

这篇文章有帮助吗?

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.