Magento2の翻訳の仕組み
この記事は公開から 1年以上が経過しています。現在の最新情報との整合性については弊社では一切の責任を負いかねます。
Magentoでサイトを構築していると、日本語と英語のニュアンスや言語的な構文の違いに悩まされる事が多々あります。
Magento1でももちろん様々な悩みはありましたが、「Magentoの翻訳機能の仕組み」で取り上げたように、あの手この手駆使することで対処ができていました。
Magento2の時代になり、翻訳の仕組みにも変更が加えられましたが、良くなった面と悪くなった面の両方があるように思います。
今回はMagento2の翻訳の仕組みについて解説したいと思います。
Magentoのロケールファイルとは
Magentoのロケールファイルは、ただのCSVです。
一部変数を差し込める機能がありますが、編集自体は特別なツールは必要なく、テキストエディタがあれば編集できます。
ロケールファイルの配置場所
Magento2では下表の種類のロケールファイルが存在します。
名称 | 場所 |
---|---|
Magentoコア | vendor/magento/<モジュール名>/i18n/*.csv |
サードパーティ製エクステンション サードパーティ製テーマ |
vendor/<ベンダー名>/<モジュール名>/i18n/*.csv app/<ベンダー名>/<モジュール名>/i18n/*.csv |
プロジェクト固有テーマ | app/design/frontend/*/*/i18n/*.csv |
プロジェクト固有ロケール サードパーティ製ロケール |
app/i18n/*/*/*.csv vendor/<ベンダー名>/<モジュール名>/*.csv |
この他に、インライン翻訳ツールで翻訳したロケールがデータベース内に保存されます。
Magento2では従来よりもロケールファイルのバリエーションが増えているので、文言調整を行う場合には注意が必要です。
ロケールファイルの作り方
ロケールファイルを作るのは簡単です。基本的な構成は、
"Yes","はい"
のようにフィールドを引用符でくくったCSVを文字コードUTF-8で作成します。
また、ファイル名はja_JP.csvのようにつけます。
複数行に渡る文言はできるだけ同じ形が望ましいほか、フィールド内の引用符は引用符を2つ重ねて打ち消す必要があります。
このあたりの挙動はMagento1と同じです。
ロケールファイルの配置
独自にエクステンションやテーマを書いている場合は、その中にi18nというディレクトリを作成し、ロケールファイルを配置します。
ロケールディクショナリを作る場合は、公式DevDocsを参照するとわかりやすいでしょう。
ロケールの継承
ロケールディクショナリを使う場合、翻訳データの継承ができます。
継承を行うことで、ある特定の翻訳データだけを上書きすることができます。
Magentoが使うシステムメッセージをすべて翻訳する作業はとても手間がかかります(8000行以上あります)。
サイトごとの要望に合わせてロケールを継承したディクショナリを作成するほうが手間がかからず管理もしやすいと思います。
ロケールの優先順位
Magento1にも存在しましたが、Magento上のロケールには優先順位があります。
下記の順番でロケールが適用されていくので、文言を調整する際には気をつけたほうが良いでしょう。
- Magento公式またはサードパーティ製モジュール固有のロケール
- テーマ固有のロケール
- ディクショナリロケール(継承元)
- ディクショナリロケール(継承先)
- データベースにあるロケール
注意すべきなのは、テーマのロケールよりディクショナリのロケールのほうが優先順位が高いことです。
たとえテーマで翻訳を調整したとしても、ディレクトリであとから上書きされることに注意をしてください。
Magento2で廃止されたもの
Magento1では、テーマ固有のロケールで以下のような書き方が認められていました。
"Mage_Catalog::Item","商品" "Mage_Cms::Item","アイテム"
このようにモジュール別に翻訳を変える機構は、Magento2では廃止されています。
同じ文言は常に同じ翻訳結果になります。
もし、同じ原文を異なる用途で使用したい場合は、原文側を変更する必要があります。
とくにフロントエンド側のテーマにおいては微妙な箇所がいくつも存在するので、プロジェクト固有のロケールあるいはテーマ固有のロケールをセットで作るほうが良いでしょう。
- お知らせ (34)
- Magento Open Source (169)
- Adobe Commerce (86)
- Magentoトピックス (349)
- Magentoバージョンアップ (11)
- OroCommerce (1)
- AkeneoPIM (16)
- Shopware (26)
- 世界のプライバシー保護規制 (11)
- OroCRM (14)
- Typo3 (9)
- イベント (27)
- Mage-OS (1)
- エクステンションリリース情報 (75)
- Mautic (1)