[ECCUBE4(symfony3)]言語切替プラグインを作ってみた


こんにちは!

kamotetuと申します

久しぶりの投稿になります

今回はタイトルの通りECCUBE4でフロントから言語切替できるプラグインを作ってみたということで紹介したいと思います。

↓リポジトリ
CrossBorder1

eccubeの対応バージョンは4.0.4 ~ 4.0.5で、4.0.3では動かないことを確認しています

ということでgithubに公開しましたのでよかったら試してみてください!
(試作品ですので完全自己責任のもと利用してください!)

↓インストール、有効化後の挙動(画像悪くてすみません)

画像は商品登録ですが、他にもタグやカテゴリなどもできます(出来なかったらすいません!)

正直プラグイン開発の練習ということで去年の秋ごろまで作ってたものなのですが、githubのreadmeにも書いてある通り危ない箇所がたくさんあったので途中で開発を中止したものになります

なんで今頃公開したかというと、eccubeのQ&Aサイトに多言語化にする方法の質問があったというのと、開発当時(今も)情報がほとんどなくて非常に頭を悩ませながら作った思い出があったのでコードを含め紹介しようと思い記事にしました

ちなみに、当時参考にした記事はこれらになります

今回プラグインということで、紐付けたいentity(商品テーブルなど)のフィールドにアノテーションを追加することが出来なかったので(やり方あるのかな?)【EC-CUBE4】DoctrineExtensionsでEC-CUBEのDBを多言語化するを参考に似たようなentityを作成して無理やり保存させるやり方を行いました

それで、コードの説明もしたいところですが、ファイルの数も多いので主要な処理をしているファイルとアクションだけご紹介します

ヘッダーの言語選択で多言語にしている処理

CrossBorder1/Event/EventListener.php
public function onKernelRequest(GetResponseEvent $event)
{
...
}

多言語保存処理

CrossBorder1/Event/SaveContentEventSubscriber.php
public function postFlush(PostFlushEventArgs $args)
{
...
}

是非githubからダウンロードしてデバッグなどして確認してみてください

作りは非常に力技の部分が多いですが、多言語化カスタマイズしようと思っている方の参考になれば幸いです!