場所
- トピック:
- 設定
作成対象:
- 経験者
- 管理者
- 開発者
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,Module_Wishlist
-o --output="<path>"
このパラメータを省略すると、出力は stdout に送られます。
-m|--magento
オプションを使用する 必ず 必要です。翻訳ガイドライン
単語やフレーズを翻訳する際は、次のガイドラインに従います。
- 2 番目の列の内容のみを変更します。 フレーズを英語(
US
)から目的の言語に翻訳します。 - ロケール用の辞書を作成する場合、デフォルトのCommerce文字列を使用します。
- 翻訳中は、プレースホルダー
%1
、%2
に注意します。
Commerceではプレースホルダーを使用してコンテキスト値を挿入します。これらは翻訳には使用 れません。 例:
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 つのパッケージから継承し、それらのパッケージに親パッケージと「grandparent」パッケージも含まれているとします。
言語パッケージが 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_package
parent-package-two/language_package_two
<vendorname>/en_ca_package
<vendorname>/en_us_package
言語パッケージ間のすべての継承を指定すると、循環継承チェーンが作成される可能性があります。 Magento\Test\Integrity\App\Language\CircularDependencyTest テストを使用して、このようなチェーンを見つけて修正します。
1 つの言語に対して複数のパッケージを設定
ストアの柔軟性を高めるために、同じ言語の複数の言語パッケージをストアにアップロードできます。 したがって、システムは特定の言語で使用可能なすべてのパッケージから 1 つのパッケージをコンパイルするので、ストアの異なる部分に対して異なるカスタムパッケージを使用できます。
既存の言語に対して追加のパッケージを有効にするには、(混乱を避けるために)既存の言語コード名を除く任意の名前を新しいパッケージに付けます。 次の節で説明するように、言語パッケージの language.xml
メタ情報ファイル内のパッケージの設定を指定します。
翻訳コマンドの使用例
次の節では、このトピックで説明したコマンドを使用して翻訳辞書と翻訳パッケージを作成する例についてエンドツーエンドで説明します。
例:モジュールまたはテーマの翻訳辞書の作成
他のマーチャントに配布するモジュールまたはテーマにドイツ語翻訳を追加するには:
-
モジュールからフレーズを収集します。
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/SampleModule
INFO
CSV ファイル名は、文字の大文字と小文字を含め、ロケールに 完全に一致 する」必要があります。 -
これらのガイドラインを使って単語や語句を翻訳します。
-
必要に応じて、
xx_YY.csv
を/var/www/html/magento2/app/code/ExampleCorp/SampleModule/i18n
またはモジュールのテーマディレクトリにコピーします(翻訳辞書がモジュール用かテーマ用かによって異なります)。
例:言語パッケージを作成する
前の例と同様に、CSV ファイルを生成しますが、モジュールまたはテーマディレクトリを指定する代わりに、Commerce アプリケーションのルートディレクトリ全体を指定します。 結果の CSV には、コマンドがコード内で見つけることができたすべてのフレーズが含まれています。
-
モジュールからフレーズを収集します。
bin/magento i18n:collect-phrases -o "/var/www/html/magento2/xx_YY.csv" -m
INFO
CSV ファイル名は、文字の大文字と小文字を含め、ロケールに 完全に一致 する」必要があります。 -
これらのガイドラインを使って単語や語句を翻訳します。
-
言語パッケージを作成します。
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
:{ "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
:<?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
:<?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>