ローカライズ
Commerceの翻訳機能を利用すれば、次の機能を生み出すことで、複数の地域や市場向けにストアをカスタマイズし、ローカライズできます。
- 翻訳辞書。カスタムモジュールやテーマ用など、一部の単語やフレーズをカスタマイズまたは翻訳するのに便利な方法です。
- Commerce アプリケーションの すべてまたはすべての 単語とフレーズを翻訳できる言語パッケージ。
翻訳の概要を参照してください。
翻訳辞書の生成
翻訳辞書を生成して、既存の文字列のカスタマイズ、カスタムモジュールでの単語やフレーズの翻訳、テーマのローカライズ、言語パッケージの作成を行うことができます。
翻訳を開始するには、コマンドを使用して、既存のすべてのフレーズと単語のリストを含む辞書CSV ファイルを生成します。
辞書を生成して翻訳を開始するには:
-
翻訳収集コマンドを使用して、有効なコンポーネントから翻訳可能な単語やフレーズを抽出します。 コンテンツはCSV ファイルに抽出されます。
-
既存の単語とフレーズを翻訳します。 必要に応じてカスタム用語を追加することができます。
翻訳された辞書を使用するためのオプションがあります。
-
翻訳ディクショナリを言語パッケージにパッケージ化し、そのパッケージをCommerce ストア管理者に提供できます。
-
管理画面で、ストア管理者が翻訳を設定します。
コマンドオプション:
bin/magento i18n:collect-phrases [-o|--output="<csv file path and name>"] [-m|--magento] <path to directory to translate>
次の表では、パラメーターと値について説明します。
<path to directory to translate>ツールは、入力したパスで検索を開始し、そのパスに含まれるすべてのファイルとサブディレクトリを検索します。
-m --magentoを使用する場合は、このパラメーターを使用しないでください。-m --magentoサンプルは
“No Items Found”,“No Items Found”,module,Magento_Wishlist
-o --output="<path>"このパラメーターを省略すると、出力はstdoutに送信されます。
-m|--magento オプションを使用してください。翻訳ガイドライン
単語やフレーズを翻訳する際には、次のガイドラインを使用します。
- 2列目の内容のみを変更します。 フレーズを英語(
US)から目的の言語に翻訳します。 - ロケール用の辞書を作成する場合は、デフォルトのCommerce文字列を使用します。
- 翻訳中は、プレースホルダーに注意してください:
%1、%2
Commerceでは、プレースホルダーを使用してコンテキスト値を挿入します。これらは not 翻訳に使用されます。 例:
Product '%1' has been added to shopping cart.
値を設定します。
Product 'Multimeter-2000' has been added to shopping cart.
結果のフレーズには、各プレースホルダーの少なくとも1つが含まれている必要があります。 例えば、元のフレーズに%1から%3までのプレースホルダーがあるとします。 翻訳は、これらのプレースホルダーを任意の順序で複数持つことができますが、%1、%2、%3の中に少なくとも1つのプレースホルダーが存在する必要があります。 翻訳に、元の値に存在しないプレースホルダー値を含めることはできません(例:%4、%5など)。
フレーズの翻訳の例:
"Buy %1 for %2 (%3 incl. tax) each","Compre %1 por %2 (%3 incl. imposto) cada"
言語パッケージの作成
翻訳ディクショナリとは異なり、Commerce アプリケーションでは、言語パッケージを使用して、すべての単語やフレーズを翻訳できます。 モジュールやテーマなど、特定のコンポーネントを翻訳辞書を使用して翻訳できます。 言語パッケージの詳細。
この節では、CSV ファイルをモジュールやテーマに書き込む言語パッケージの作成方法について説明します。 言語パッケージを作成するには、次の節で説明するタスクを実行する必要があります。
- 単語やフレーズを収集して翻訳する。 (
--magentoパラメーターが必要です)。 - 言語パッケージコマンドを実行します。
- ディレクトリとファイルを作成。
- (オプション) 1つの言語に対して複数のパッケージを設定。
言語パッケージコマンドの実行
コマンドの使用状況:
bin/magento i18n:pack [-m|--mode={merge|replace}] [-d|--allow-duplicates] <source> <locale>
次の表に、言語パッケージコマンドのパラメーターと値を示します。
<source>bin/magento i18n:collect-phrasesを使用してCSV ファイルを作成し、 ディレクトリとファイルの作成で説明したように言語パッケージを作成します。<locale>-m --mode値:結合または置換(デフォルト)。
-d --allow-duplicatesディレクトリとファイルの作成
言語パッケージは、次の内容を含むCommerce ファイルシステムのapp/i18n/<VendorName>の下のディレクトリにあります。
- 必要なライセンスファイル
composer.json- が言語パッケージを登録する
registration.php language.xmlメタ情報ファイル
de_deを参照してください。これらのファイルを作成するには:
-
app/i18nの下にディレクトリを作成します。例えば、Commerceの言語パッケージは
app/i18n/magentoにあります -
必要なライセンスファイルを追加します。
-
言語パッケージの依存関係を指定する
composer.jsonを追加します。 -
言語パッケージを
registration.phpに登録します -
次の節で説明するように、
language.xmlのメタ情報ファイルを追加します。
言語パッケージ language.xml
language.xml設定ファイルで言語パッケージを宣言する場合は、このパッケージの言語継承の順序を指定する必要があります。
言語の継承を使用すると、parentという既存の翻訳に基づいて、childという翻訳を作成できます。 子翻訳は親を上書きします。 ただし、子翻訳がアップロードまたは表示に失敗した場合、またはフレーズや単語が見つからない場合は、Commerceで親ロケールが使用されます。 言語パッケージ継承の例。
パッケージを宣言するには、次の情報を指定します。
<?xml version="1.0"?>
<language xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:framework:App/Language/package.xsd">
<code>en_GB</code>
<vendor>magento</vendor>
<package>en_gb</package>
<sort_order>100</sort_order>
<use vendor="oxford-university" package="en_us"/>
</language>
どこで:
code– 言語パッケージのロケール (必須)vendor- モジュールのベンダー名(必須)package– 言語パッケージ名(必須)sort_order- ストアで使用可能な複数の言語パッケージがある場合のパッケージのアップロードの優先度use– 辞書を継承する親言語パッケージのロケール
必要に応じて、複数の親パッケージを指定できます。 親パッケージは、最初にリストされ、最初に使用されたベースで適用されます。
言語継承の例
言語パッケージが他の2つのパッケージから継承し、それらのパッケージにも親パッケージと「祖父母」パッケージがあるとします。
言語パッケージが2つのパッケージから継承する場合、そのlanguage.xmlは次のようになります。
<language xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:framework:App/Language/package.xsd">
<code>en_GB</code>
<vendor>magento</vendor>
<package>language_pack</package>
<sort_order>100</sort_order>
<use vendor="parent-package-one" package="language_package_one"/>
<use vendor= "parent-package-two" package="language_package_two"/>
</language>
前の例では、
language_package_oneはen_au_packageから継承し、en_au_packageはen_ie_packageから継承しますlanguage_package_twoはen_ca_packageから継承し、en_ca_packageはen_us_packageから継承します
Commerce アプリケーションがen_GB パッケージ内の単語または語句を見つけられない場合、次の順序で他のパッケージを検索します。
parent-package-one/language_package_one<vendorname>/en_au_package<vendorname>/en_ie_packageparent-package-two/language_package_two<vendorname>/en_ca_package<vendorname>/en_us_package
言語パッケージ間のすべての継承を指定すると、循環する継承チェーンが作成される場合があります。 Magento\Test\Integrity\App\Language\CircularDependencyTest テストを使用して、そのようなチェーンを見つけ、修正します。
1つの言語用に複数のパッケージを設定する
ストアの柔軟性を高めるために、ストアに同じ言語の言語パッケージを複数アップロードできます。 したがって、システムは言語で使用可能なすべてのパッケージから1つのパッケージをコンパイルするため、ストアの異なる部分に対して異なるカスタムパッケージを使用できます。
既存の言語の追加パッケージを有効にするには、新しいパッケージに既存の言語コード名を除く任意の名前を付けます(混乱を避けるために)。 次の節で説明するように、言語パッケージのlanguage.xml メタ情報ファイルでパッケージの設定を指定します。
翻訳コマンドの使用例
次の節では、このトピックで説明するコマンドを使用して翻訳辞書と翻訳パッケージを作成するエンドツーエンドの例を示します。
例:モジュールまたはテーマの翻訳辞書の作成
他の販売者に配布するモジュールまたはテーマにドイツ語翻訳を追加するには:
-
モジュールからフレーズを収集します。
code language-shell bin/magento i18n:collect-phrases -o "/var/www/html/magento2/app/code/ExampleCorp/SampleModule/i18n/xx_YY.csv" /var/www/html/magento2/app/code/ExampleCorp/SampleModulenote info INFO CSV ファイル名は、文字の大文字と小文字を含め、ロケールが_完全に_一致している必要があります。 -
これらのガイドライン を使用して、単語やフレーズを翻訳します。
-
必要に応じて、
xx_YY.csvを/var/www/html/magento2/app/code/ExampleCorp/SampleModule/i18nまたはモジュールのテーマディレクトリにコピーします(翻訳ディクショナリがモジュール用かテーマ用かによって異なります)。
例:言語パッケージの作成
前述の例と同様に、CSV ファイルを生成しますが、モジュールまたはテーマディレクトリを指定する代わりに、Commerce アプリケーションルートディレクトリ全体を指定します。 結果のCSVには、コマンドがコード内で検索できるフレーズが含まれています。
-
モジュールからフレーズを収集します。
code language-shell bin/magento i18n:collect-phrases -o "/var/www/html/magento2/xx_YY.csv" -mnote info INFO CSV ファイル名は、文字の大文字と小文字を含め、ロケールが_完全に_一致している必要があります。 -
これらのガイドライン を使用して、単語やフレーズを翻訳します。
-
言語パッケージを作成します。
code language-shell bin/magento i18n:pack /var/www/html/magento2/xx_YY.csv -d xx_YY -
言語パッケージのディレクトリを作成します。
例:
/var/www/html/magento2/app/i18n/ExampleCorp/xx_yy -
そのディレクトリに、次のすべてを追加します。
- ライセンス(必要な場合)
composer.json(次のサンプル)registration.php(次のサンプル)language.xml(次のサンプル)
サンプル
composer.json:code language-json { "name": "examplecorp/language-xx_yy", "description": "Sample language", "version": "100.0.2", "license": [ "OSL-3.0", "AFL-3.0" ], "require": { "magento/framework": "100.0.*" }, "type": "magento2-language", "autoload": { "files": [ "registration.php" ] } }サンプル
registration.php:code language-php <?php /** * Copyright [first year code created] Adobe * All Rights Reserved. */ use Magento\Framework\Component\ComponentRegistrar; ComponentRegistrar::register( ComponentRegistrar::LANGUAGE, 'magento_xx_yy', __DIR__ );サンプル
language.xml:code language-xml <?xml version="1.0"?> <!-- Copyright [first year code created] Adobe All Rights Reserved. --> <language xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:framework:App/Language/package.xsd"> <code>xx_YY</code> <vendor>examplecorp</vendor> <package>xx_yy</package> </language>