Magento2 日本語化手順:Language Packages方式でオリジナル辞書ファイル作成する
イントロダクション
Magento2.4.*(2.4系)に対してLanguage Packages方式でオリジナルの辞書ファイルを作成してストア表示を日本語化する手順について紹介します。
Language Packages方式とは?
Magentoの各コンポーネント別に分けて翻訳文字列を定義をして置換する方式です。共通ロケール辞書定義で翻訳置換する「Translation Dictionary方式」とは違い、コンポーネント・モジュールごとに異なる翻訳文字を定義設定することができます。
本記事の手順に関して下記ページを参考にしています。
(※)本記事執筆時のバージョンはMagento2.4.5になります。
Magento2日本語化手順
Magento2ストアの表示を自作オリジナルのLanguage Packages方式を用いて日本語化するには下記のような手順となります。
1.日本語化Dictionary定義ファイル雛形の出力
2.Dictionaryファイルの編集
3.i18n:packコマンドの実行
4.フロントエンドの日本語表示
5.管理画面(バックエンド)の日本語表示
【1】 日本語化Dictionary定義ファイル雛形の出力
MagentoのCLIコマンドで日本語化ロケールDictionary定義ファイルの元となる雛形のファイルを出力させます。このコマンドにより現在のストアのエクステンション構成で 有効な多言語対応の文字列が一括でCSV形式で出力されます。コマンドオプション –out=xxxx で出力ファイルパスを指定します。
例)/tmp/ja_JP.csv に雛形ファイルを出力する場合
$ su - magento_user
$ cd /path/to/magento/
$ bin/magento i18n:collect-phrases --output=/tmp/ja_JP.csv -m
i18n:collect-phrases コマンドの詳細については公式ドキュメントのこちらを参照のこと。
【2】Dictionaryファイルの編集
前項で出力したCSV形式ファイルを編集します。意図せず特殊文字などが自動変換される可能性を考えると、エクセルなどの表計算ソフトではなく、テキストエディタを使った編集をおすすめします。
CSVファイルの各カラムは下記のように4つの要素で構成されています。
[第1カラム]置換元の文字列(英語表記)
[第2カラム]ロケール設定により置換する文字列
[第3カラム]対象コンポーネントタイプ(モジュールの場合はmodule)
[第4カラム]対象コンポーネント名(例:Magento_Catalog)
公式ドキュメントにも記載のとおり、編集すべきデータは第2カラムのみとなります。
この記事で説明している、「Language Packages方式」での日本語化の場合、CSV1行の定義で意味していることは。『[第3カラム]と[第4カラム]で指定されているコンポーネント要素の定義にi18n/ja_JP.csvを作成して、[第1カラム]と[第2カラム]を出力せよ』ということを意味します。
次項のi18n:packコマンドを実行することにより、この各コンポーネントの i18n/ja_JP.csv の出力がされることになります。
【3】i18n:packコマンドの実行
前項で編集したCSV形式ファイルを定義ソースとして i18n:packコマンドを実行します。
このコマンドの詳細オプションについては公式ドキュメントのこちらが参考になります。
このコマンドを実行すると、[第3カラム],[第4カラム]の識別子に従い該当コンポーネントの i18nディレクトリに ja_JP.csvが作成されます。
例として、下記のような内容の ja_JP.csv を定義ソースとして i18n:pack コマンドを実行するケースについて説明します。
"Summary","サマリ",module,Magento_Bundle
"Summary","サマリ",module,Magento_ConfigurableProduct
"Summary","レビュータイトル",module,Magento_Review
"Summary","お支払内容",module,Magento_Checkout
i18n:pack コマンドの実行の結果下記のような処理がされます。
[1行目の定義による処理]
Magento_Bundle モジュールのコンポーネントのi18nディレクトリにja_JP.csv が作成され、[第1カラム]と[第2カラム]の内容が出力されます。
出力された ./vendor/magento/module-bundle/i18n/ja_JP.csv の内容
Summary,サマリ
[2行目の定義による処理]
Magento_ConfigurableProduct モジュールのコンポーネントのi18nディレクトリにja_JP.csv が作成され、[第1カラム]と[第2カラム]の内容が出力されます。
出力された ./vendor/magento/module-configurable-product/i18n/ja_JP.csv の内容
Summary,サマリ
[3行目の定義による処理]
Magento_Review モジュールのコンポーネントのi18nディレクトリにja_JP.csv が作成され、[第1カラム]と[第2カラム]の内容が出力されます。
出力された ./vendor/magento/module-review/i18n/ja_JP.csv の内容
Summary,レビュータイトル
[4行目の定義による処理]
Magento_Checkout モジュールのコンポーネントのi18nディレクトリにja_JP.csv が作成され、[第1カラム]と[第2カラム]の内容が出力されます。
出力された ./vendor/magento/module-checkout/i18n/ja_JP.csv の内容
Summary,お支払内容
コマンドの実行例
自身のMagentoストアのCLIコンソールでアクセスして、magento_userでMagentoルートディレクトリへ移動します。
(*)"/path/to/magento/" の部分は適宜ご自身のサーバー環境に合わせてください。
(*)"/tmp/ja_JP.csv" の部分は前項で用意したCSVファイルのパス。
$ su - magento_user
$ cd /path/to/magento/
$ php ./bin/magento i18n:pack \
-m replace -d /tmp/ja_JP.csv ja_JP
正常に処理が終了すると、下記のメッセージが表示されます。
------------------------------------------------------------------------------
Successfully saved ja_JP language package
------------------------------------------------------------------------------
i18n:pack コマンドの注意点
将来Composerを使ったMagento本体のアップグレードをすると 正規のコンポーネント構成ファイルでない為、本件i18n:packコマンドにより作成された ja_JP.csv ファイルは消えてしまいます。Magento本体をアップデートした場合には、ソース翻訳適宜ファイルを指定して、再度 i18n:pack コマンドを実行する必要があるので、前項で編集して用意したオリジナルのソース定義ファイルは保管しておくことをおすすめします。
Translation Dictionary方式と併用されている場合の注意点
Translation Dictionary方式の日本語の定義と併用されている場合(=第1カラムの語句がどちらにも定義されている場合)、Language Packages方式での定義より、そちらが優先されて翻訳置換されてしまいます。もしも、pack:i18n コマンドにより配置される ja_JP.csv の定義で表示としたい場合には、Translation Dictionary方式の辞書ファイル(ja_JP.csv)の重複定義している行を削除することで、Language Packages方式の定義が採用されて翻訳置換表示されます。
最後に今回のi18n:packコマンドによりファイルがいくつか追加されているのでパーミッションを設定しておきます。
$ cd /path/to/magento/
$ sudo chown -R magento_user:www-data .
$ find . -type d -exec chmod 770 {} \;
$ find . -type f -exec chmod 660 {} \;
コンテンツデプロイ
翻訳リソースキャッシュファイル"js-translation.json"を削除してからデプロイして最後にキャッシュクリアをします。
$ cd /path/to/magento/
$ rm pub/static/adminhtml/Magento/backend/ja_JP/js-translation.json
$ rm pub/static/frontend/Magento/luma/ja_JP/js-translation.json
$ php bin/magento setup:static-content:deploy ja_JP -f
$ php bin/magento cache:flush
(※)"Magento/luma" の部分は現在有効なテーマ設定に合わせること。デフォルトのLuma以外のテーマ場合には"<Vendor>/<theme>"とします。
例)オリジナルテーマが<Vendor>="Myvendor", <theme>="custom" の場合 rm pub/static/frontend/Myvendor/custom/ja_JP/js-translation.json
【4】フロントエンドの日本語表示
[Step.1] 動作モードを"developer mode"に変更します。
“Locale Options::Locale" の設定変更は、MagnetoがDeveloperモードの時のみ変更できるため、最初にMagentoの動作モードをDeveloperモードに変更する必要があります。
Ref: https://experienceleague.adobe.com/docs/commerce-operations/configuration-guide/cli/set-mode.html?lang=en
$ php -f ./bin/magento deploy:mode:set developer
[Step.2] ロケール設定を“Japanese(Japan)”に変更します。
バックエンド画面 Stores > Configuration > General > Locale Options へ移動します。
すると、ロケール設定ページが表示されます。ここで"Japanese(Japan)"を選択して"Save Config"をクリックしてセーブします。
(※)もしもLocaleのドロップダウンが無効化されている場合。原因はMagentoの動作モードがDeveloperモードでないためです。その場合、前述[Step.1]の操作で"developer mode"に変更してください。
[Step.3]設定キャッシュをクリアします。
$ php -f ./bin/magento cache:flush
【5】 管理画面(バックエンド)の日本語表示
バックエンド画面(管理者ページ)の言語表示設定は管理者ユーザーごとに設定します。
バックエンド画面に移動
System > Permission > All Users > 変更する対象ユーザーをクリックします。
“Japanese(Japan)"を選択
次回ログイン後、バックエンド画面が日本語表示になります。