プッシュ
$ phrase push
push コマンドは、ローカルプロジェクトディレクトリにあるファイルをアップロードします。.phrase.ymlファイルを使用してアップロードするファイルを指定し、追加のパラメータを設定します。<tag>プレースホルダーを使用して、タグに基づいてキーを別のファイルにダウンロードすることもできます。
プル
$ phrase pull
pushコマンドと似ていますが、例外グロビングは使用できません。プレースホルダーを使用する場合は、可能な限り <locale_name> を使用します。特定のタグを持つキーを持つファイルをプルするには、 tags パラメータを使用します。
phrase:
pull:
targets:
- file: path/to/file/<locale_name>.yml
params:
tags:tag_name
<tag> プレースホルダーを使用するには、必要なタグが 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 のような明示的なファイルパターンを入力します。
すべてのアップロードは非同期で処理されます。アップロード後に実行するには、 --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は上書き可能です
file_format: "stringsdict"
Android XML
Androidでは、ファイルパターンとして標準のISO言語コードは使用されません。.phrase.ymlで必要なパターンを指定してください。
各ロケールのために別々のプルターゲットを定義する代わりに、グローバルな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
# 英語のユニークロケールID
locale_id: LOCALE_ID
- file: ./app/src/main/res/values-de/strings.xml
params:
file_format: xml
# ドイツ語のユニークロケールID
locale_id: LOCALE_ID
- file: ./app/src/main/res/values-de-rAU/strings.xml
params:
file_format: xml
# オーストリアのユニークロケールID
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