Shopwareに日本語ロケールを適用する(2023.11暫定版)
この記事は公開から 1年以上が経過しています。現在の最新情報との整合性については弊社では一切の責任を負いかねます。
この記事では、2023年11月時点のCrowdin上にある翻訳データを使用して、Shopwareのロケールキットに日本語を追加する方法を紹介します。
Shopwareのデフォルトでは英語表示ですが、この記事で紹介する手順を踏むことで、日本語での表示が可能になります。
なお、将来的に公式のロケールキットがアップデートし、日本語が含まれるようになった際にはこの手順は不要となります。
Shopwareの動作する環境を用意する
以降の作業を行うためには、Shopwareが動作する環境が必要です。
以下の手順などを利用して、とにかくまずはShopwareが動く環境を用意します。
私の手元環境はMacなのでDenを用いて環境を構築していますが、同じような構成を作れるのであれば何でも構いません。
ロケールキットをインストールする
Shopwareをインストールするついでに、ロケールキットをインストールしておきます。
通常はインストールの際にオプションとして提示されるため、ついでにチェックをしておけば良いでしょう。
もしインストールされていない場合は、Shopwareの管理画面にある
Extension > Store
にアクセスし、「Shopware Language Pack」をインストールしましょう。
ロケールキットを改造する
ここからが本題です。
2023年11月時点でのロケールキットには日本語が含まれていないので、人力で追加する必要があります。
- 言語コードの追加
- JSONファイルの配置
- データベース更新スクリプトの作成
という3つの手順を踏むことで、日本語をロケールキットに追加できます。
では、
Shopwareインストールディレクトリ/custom/plugins/SwagLanguagePack/src/
へ移動しましょう。
言語コードの追加
まず最初は、言語コードの追加です。ロケールキットのディレクトリにある、
SwagLanguagePack.php
をテキストエディタで開きます。
constで定義されている、
- SUPPORTED_LANGUAGES
- BASE_SNIPPET_SET_LOCALES
に対して、日本語の定義を追加します。
JSONファイルの配置
次にロケールの内容を定義しているJSONファイルを追加します。
このJSONファイルはCrowdinからダウンロードできます。
下図の画面の赤枠のボタンを押すと、ロケールファイルがzip形式で入手できます。
ダウンロードしてきたzipファイルを展開すると、複数のディレクトリに分かれる形でJSONファイルが入っていることが確認できます。
それぞれのファイルを下表のルールに従って配置する必要があります。
展開したアーカイブ側 | Language Pack側 |
---|---|
Platform/Administration/administration.json | Resources/app/administration/src/snippet/ja-JP.json |
Platform/Core/messages.json | Resources/snippet/core/messages.ja-JP.base.json |
Platform/Storefront/storefront.json | Resources/snippet/storefront/storefront.ja-JP.json |
Plugins/モジュール名/Administration/administration.json | Resources/app/administration/src/snippet/モジュール名/ja-JP.json |
Plugins/モジュール名/Storefront/storefront.json | Resources/snippet/モジュール名/storefront.ja-JP.json |
Plugins/モジュール名/Core/messages.json は全て使わないので無視してOKです。
データベース更新スクリプトの作成
最後にデータベース更新を行うファイルを作成します。
Shopwareはデータベースに対する更新をエクステンション内に配置したファイルと、データベース上の履歴テーブルを突合することで管理しています。
そのため、更新用のスクリプトを作成しなければ、データベースに対する更新が実行できません。
Migrationファイルの作成
データベース更新を担当するファイルは、次の命名規則で管理されています。
Migration + UNIXタイムスタンプ + 更新処理名
ロケールキットには標準で「Migration/Migration1605167857AddPackLanguage.php」が付属しています。
このファイルをコピーし、数字部分を新しいUNIXタイムスタンプに置き換えたファイルを作成しましょう。
Migration処理の実装
次は作成したファイルを開き、コードを調整します。
PHPStormなどをご利用の場合は、ファイル名とクラス名を自動的に同期させてくれることもありますが、テキストエディタなどの場合はファイル名に使用した文字列をクラス名に使用するようにしましょう。
さて、Migrationクラスの中には、
- getCreationTimestamp
- update
- updateDestructive
という3つの処理が書かれています。「getCreationTimestamp」の戻り値には、クラス名に使用したUNIXタイムスタンプ値が戻り値になるようにしてください。
「updateDestructive」は今回は使用しないのでそのままで構いません。「update」については以下の記述に改変します。
$migrationHelper = new MigrationHelper($connection);
$migrationHelper->createPackLanguages();
$migrationHelper->createSnippetSets();
あとはファイルを保存しておきます。
データベース更新処理の実行
ここまでの作業が全てできたら、コマンドライン環境でShopwareのインストールディレクトリに移動し、以下のコマンドを実行します。
php bin/console database:migrate SwagLanguagePack --all
このコマンドはデータベース更新処理を実行するものです。
下図のような実行結果が得られれば成功です。
結果の確認
最後は日本語が正しく認識されているかを確認します。
Settings > Extension > Language pack
にアクセスし、リストに日本語があるかを確認します。
下図のように日本語が表示されていれば成功です。
あとは管理者アカウントや、セールスチャネルの設定で日本語を指定しましょう。
これでShopwareが日本語の表示で利用できるようになります。