Craft CMS 3で管理画面をローカライズ(翻訳)する

公開

先日の記事「Craft CMSを使用した多言語サイト制作のはじめの一歩」でCraft CMSの多言語対応を試してみましたが、管理画面で私が作成したセクション名やフィールド名を英語で表示することはできるかな? と考えました。というのも、英語サイトはアメリカ人の社員が更新する、といったことが考えられるからです。

Craft CMSのドキュメントを探してみたところ、「Translating Static Text | Support | Craft CMS」という記事を見つけました。bit partの奥脇さんの記事「Craft CMS に独自の翻訳ファイルを適用する | かたつむりくんのWWW」に日本語の解説もあります。

まずアメリカ人社員を想定し、Corey Kingさんのアカウントを作成します。アカウントを追加するためにPro版にアップグレードをしました。Coreyさんの言語設定は「English」にします。
画面キャプチャ:管理画面に翻訳する前の表示

変更したい画面は以下のサイトホーム編集画面です。「サイトホーム」と「テストテキスト」をそれぞれ英語に変えたいと思います。
画面キャプチャ:管理画面に翻訳する前の表示

早速解説に従ってcraftディレクトリ内にtranslationsディレクトリを追加し、翻訳ファイルen.phpを作成してみました。

<?php

return array (
    'サイトホーム'=> 'Site Home',
    'テストテキスト'=> 'Test Text',
);

翻訳ファイルを作成後リロードしてみたのですが、変化がありません。そこで調べたところ、「Changes in Craft 3 | Craft 3 Documentation」でtranslationsディレクトリの仕様が変わっていることを知りました。例えば今回のようにフィールド名等をローカライズする場合は、craft/translations/en/のようにtranslationsの中に言語のディレクトリ(今回はen)を作成しsite.phpという翻訳ファイルを作成するようです。

そこで新しい仕様を満たすように構成を変えて再度画面を確認したところ、フィールド名「テストテキスト」が「Test Text」に翻訳されました。
画面キャプチャ:管理画面に翻訳後の表示

しかし、「サイトホーム」が翻訳されていません。原因を調べたのですが、管理画面のテンプレートcraft/vendor/craftcms/cms/src/templates/_layouts/cp.htmlの227行目、<h1>{{ title }}</h1><h1>{{ title|t }}</h1>(フィルタ|tを付与)であれば翻訳が適用されることが判明しました。この辺り何とかならないものでしょうか。
画面キャプチャ:管理画面のテンプレート変更後の表示

ひとまずユーザーの言語に合わせた表示ができることが分かり満足しました。