ヒント
詳細については、Developer Hubを参照してください。
Push
$ phrase push
push コマンドは、ローカルプロジェクトディレクトリにあるファイルをアップロードします。.phrase.ymlファイルを使用してアップロードするファイルを指定し、追加のパラメータを設定します。<tag>プレースホルダーを使用して、tagsに基づいてキーを別のファイルをダウンロードすることもできます。
プル
$ phrase pull
pushコマンドと似ていますが、例外グロビングは使用できません。プレースホルダーを使用する場合は、可能な限り <locale_name> を使用します。特定のタグを持つキーを持つファイルを pull するには、 tags パラメータを使用します。
phrase:
pull:
targets:
- file: path/to/file/<locale_name>.yml
params:
tags:tag_name
<tag> プレースホルダーを使用するには、必要な tags が params セクションに記載されている必要があります。
パラメータ
pushおよびpullコマンドは、.phrase.ymlファイル内で設定できます。
uploads APIエンドポイントのすべてのオプションが、pushコマンドでサポートされています。
locales download APIエンドポイントのすべてのオプションが、pullコマンドでサポートされています。
Push の例:
push:
sources:
- file: ./locales/en.json
params:
update_translations: true
Pull の例:
pull:
targets:
- file: "./locales/example.yml"
params:
include_unverified_translations: true
ファイル形式によっては、ファイル形式オプションをパラメータ セクションに適用できます。ファイル形式オプションは uploads、downloads、またはその両方に適用できます。
ファイル形式の例:
params:
format_options:
convert_placeholder: true
ファイル形式の中には、ファイル構文をより詳細に制御できるものがあります。
phrase:
pull:
targets:
- file: file.xml
params:
format_options:
convert_placeholder: true
push:
sources:
- file: file.csv
params:
format_options:
column_separator: ";"
以下のプレースホルダーとグロビング演算子をファイルエントリ内のパスに含めることができます。
グロビング
*と**はグロッブ演算子です。単一のアスタリスク * は、パス内のすべてのフォルダをスキップします。ダブルアスタリスク ** は、標準のグロビング演算子と類似しており、再帰的、非網羅的なマッチングのために任意の文字と一致します。
例:
# a file pattern ./abc/**/*.yml
# with a few files on your system ./abc/defg/en.yml ./abc/es.yml ./fr.yml
# selects ./abc/defg/en.yml ./abc/es.yml
pull コマンドを使用してファイルをダウンロードする場合、 ./**/*.ymlではなく ./abc/defg/<locale_name>.yml のような明示的なファイルパターンを入力します。
すべてのuploadsは非同期で処理されます。アップロード後に実行するには、 --wait フラッグを適用します。push は、各ファイルがアップロードされた後に実行され、アップロードが成功か失敗かに関わらず、結果を返します。
指定ロケールにファイルをアップロード
locale_id で指定の en.json ファイルを ./locales/ ディレクトリにアップロードします (ロケールすでに存在していなければなりません)。
Update_translationsがfalseに設定されているため、新しいキーと翻訳のみがインポートされます。trueに設定した場合、クライアントは既存の翻訳に対するローカルな変更もインポートし、既存のコンテンツはすべて上書きされます。
phrase:
access_token: ACCESS_TOKEN
project_id: PROJECT_ID
file_format: nested_json
push:
sources:
- file: ./locales/en.json
params:
update_translations: false
locale_id: YOUR_LOCALE_ID # the locale must exist remotely
備考
インポートされた翻訳エントリは削除できません。必要に応じて、関連 API エンドポイント経由で翻訳を empty 値に更新してください。
Ruby on Rails: 指定されたファイル形式のアップロード
./config/locales/にある.ymlで終わるすべてのファイルをアップロード。Ruby on Rails の YAML ファイルにはロケール情報が含まれているため、ロケールを明示的に指定する必要はありません。Update_translationsがtrueに設定されているため、翻訳に対する変更はすべてインポートされ、既存のデータは上書きされます。
phrase:
push:
sources:
- file: ./config/locales/*.yml
params:
update_translations: true
file_format: yml
一致iOS Strings
すべてのiOS Stringsファイルと.lprojフォルダ内のLocalizable.stringsという名前のファイルを一致させます。
<locale_code> は、ロケールを作成し検収するために、/から.lproj までにすべての一致する内容です。
update_translationsパラメータが省略されており、falseに設定した場合と同じ結果になります。
phrase:
push:
sources:
- file: "./<locale_code>.lproj/Localizable.strings"
params:
file_format: strings
1 つのローカライゼーションプロジェクトに対して複数の Strings プロジェクトを維持
設定ファイルを編集し、翻訳をより小さなカテゴリに分割してプロジェクトの範囲を制限できます。
要件に合わせて設定ファイルを変更し、原文管理システムまたはバージョン管理システムにチェックインします。
Rails
phrase:
access_token: ACCESS_TOKEN
project_id: PROJECT_ID
file_format: "yml"
push:
sources:
- file: "./config/locales/*.yml"
pull:
targets:
- file: "./config/locales/<locale_name>.yml"
iOS Strings
phrase:
access_token: ACCESS_TOKEN
project_id: PROJECT_ID
file_format: "strings"
push:
sources:
- file: "./<locale_code>.lproj/Localizable.strings"
pull:
targets:
- file: "./<locale_code>.lproj/Localizable.strings"
- file: "./<locale_code>.lproj/Localizable.stringsdict"
params:
#file_format can be overwritten
file_format: "stringsdict"
Android XML
Android では、ファイルパターンとして標準の ISO 言語コードを使用しません。.phrase.ymlで必要なパターンを指定できます。
ロケールごとに個別のpull訳文を定義する代わりに、グローバルな locale_mapping 設定と <locale_name> プレースホルダーを組み合わせて使用します。CLIは、対応するロケールに対してマッピングからのカスタム名を使用し、他のすべての言語についてはデフォルトのPhraseロケールコードにフォールバックします。
例:
phrase:
access_token: ACCESS_TOKEN
project_id: PROJECT_ID
file_format: "xml"
# PhraseロケールをAndroid固有のディレクトリ名にマッピングする
locale_mapping:
en-US: values
de-DE: values-de-rDE
fr-FR: values-fr
push:
sources:
# 原文ファイルはデフォルト言語であり、'values'にマッピングされます
- file: ./app/src/main/res/values/strings.xml
params:
locale_id: en-US # Phraseの原文ロケールと一致する必要があります
pull:
targets:
# マッピングによって置き換えられる <locale_name> プレースホルダーを使用します
- file: ./app/src/main/res/<locale_name>/strings.xml
ロケールを明示的に設定する例
英語をデフォルト言語、ドイツ語ロケール、ドイツ語地域ロケールをオーストリア・ドイツ語に設定した場合の例を示します。
phrase:
access_token: ACCESS_TOKEN
project_id: PROJECT_ID
file_format: xml
pull:
targets:
- file: ./app/src/main/res/values/strings.xml
params:
file_format: xml
# Unique locale id for English
locale_id: LOCALE_ID
- file: ./app/src/main/res/values-de/strings.xml
params:
file_format: xml
# Unique locale id for German
locale_id: LOCALE_ID
- file: ./app/src/main/res/values-de-rAU/strings.xml
params:
file_format: xml
# Unique locale id for Austrian
locale_id: LOCALE_ID
push:
sources:
- file: ./app/src/main/res/values/strings.xml
params:
file_format: xml
locale_id: LOCALE_ID
- file: ./app/src/main/res/values-de/strings.xml
params:
file_format: xml
locale_id: LOCALE_ID
- file: ./app/src/main/res/values-de-rAU/strings.xml
params:
file_format: xml
locale_id: LOCALE_ID
マルチプラットフォームの例
1つの設定で複数の訳文の翻訳を自動的にプッシュおよびプルします。
phrase:
access_token: ACCESS_TOKEN
project_id: PROJECT_ID
file_format: nested_json
push:
sources:
# Web JSON
- file: "apps/web/src/assets/i18n/.json"
params:
file_format: nested_json
locale_id: LOCALE_ID
# Android XML
- file: "apps/android/app/src/main/res/values-/strings.xml"
params:
file_format: android
locale_id: LOCALE_ID
# iOS Strings
- file: "apps/ios/.lproj/Localizable.strings"
params:
file_format: strings
locale_id: LOCALE_ID
pull:
targets:
- file: "apps/web/src/assets/i18n/.json"
params:
file_format: nested_json
locale_id: LOCALE_ID
- file: "apps/android/app/src/main/res/values-/strings.xml"
params:
file_format: android
locale_id: LOCALE_ID
- file: "apps/ios/.lproj/Localizable.strings"
params:
file_format: strings
locale_id: LOCALE_ID