要望や症状
EC-CUBEの管理画面や商品一覧ページなどで、本来であれば日本語で表示されるべき箇所に「admin.dashboard.title」「common.search」「admin.product.index.title」のような英数字とドットからなる文字列が表示される場合があります。
発生する箇所の例
管理画面のメニュー項目、ページタイトル、ボタンのラベル、エラーメッセージ、フロント画面の商品カテゴリ名や各種ラベルなど、EC-CUBE内のあらゆる箇所で発生する可能性があります。
発生タイミング
プラグインのインストールやアップデート後、EC-CUBEのバージョンアップ後、サーバー移転後、翻訳ファイルを手動で編集した後などに発生することが多く見られます。
理由や原因
EC-CUBEでは、画面に表示される文字列を多言語対応のために翻訳キーとして管理しています。例えば管理画面に表示される「ホーム」という文字列は「admin.home」という翻訳キーで定義され、実際の表示時に日本語に変換される仕組みになっています。
翻訳キーがそのまま表示される原因は、主に以下の要因が考えられます。
まず、翻訳ファイルの読み込みエラーです。EC-CUBEの翻訳ファイルは「src/Eccube/Resource/locale/」ディレクトリ内の「messages.ja.yaml」ファイルに格納されており、このファイルの読み込みに問題が発生すると翻訳が正常に機能しません。
次に、キャッシュの問題です。EC-CUBEは翻訳データをキャッシュして高速化を図っていますが、このキャッシュが古い状態のままになっていたり、破損していたりすると翻訳が正しく動作しません。
さらに、プラグインによる翻訳ファイルの競合も原因となります。プラグインが独自の翻訳ファイルを持っている場合、インストールやアップデート時に既存の翻訳設定に影響を与えることがあります。
解決策
翻訳ファイルの確認
まず、翻訳ファイルが正常に存在するかを確認します。EC-CUBEのルートディレクトリから「src/Eccube/Resource/locale/messages.ja.yaml」ファイルが存在し、適切な権限(読み取り可能)が設定されているかを確認してください。ファイルが存在しない場合は、EC-CUBEの再インストールまたはファイルの復旧が必要です。
管理画面でのキャッシュクリア
最も効果的で一般的な解決方法は、管理画面からキャッシュを削除することです。EC-CUBE管理画面にログインし、左側メニューから「設定」「システム設定」「キャッシュ管理」の順に選択します。キャッシュ管理画面で「キャッシュ削除」ボタンをクリックし、削除完了後にブラウザを再読み込みして問題が解決されたかを確認してください。
コマンドラインでのキャッシュクリア
サーバーにSSHアクセスが可能な場合は、コマンドラインからより確実にキャッシュをクリアできます。EC-CUBEのルートディレクトリに移動し、「bin/console cache:clear」コマンドを実行してください。このコマンドはSymfonyフレームワークのキャッシュクリア機能を使用するため、管理画面からの操作よりも確実です。
手動でのキャッシュディレクトリ削除
上記の方法で解決しない場合は、手動でキャッシュディレクトリを削除することも可能です。EC-CUBEルートディレクトリの「var/cache/」フォルダ内のファイルをすべて削除してください。ただし、この方法はファイルシステムへの直接操作になるため、事前にバックアップを取ることをお勧めします。
プラグインの一時的な無効化
特定のプラグインが原因と疑われる場合は、該当プラグインを一時的に無効化してから上記のキャッシュクリアを実行することで、問題の切り分けができます。問題が解決した場合は、プラグインの設定や翻訳ファイルに問題がある可能性があります。
注意事項
キャッシュクリア後は、一時的にサイトの表示速度が低下する場合がありますが、ユーザーのアクセスにより徐々にキャッシュが再構築され、速度は回復します。また、本番環境での作業は必ず事前にバックアップを取ってから実行することを強く推奨します。