先日の記事「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
を付与)であれば翻訳が適用されることが判明しました。この辺り何とかならないものでしょうか。
ひとまずユーザーの言語に合わせた表示ができることが分かり満足しました。