-
Notifications
You must be signed in to change notification settings - Fork 132
国際化対応方法
baserCMSは、土台となるCakePHPの国際化機構を利用して国際化に対応しています。
アプリケーション部分の表示やメッセージについて国際化するためには翻訳関数を利用します。
CakePHPの国際化機構の詳細については、CakePHPの
国際化と地域化
を参照してください。
あなたのコードを国際化する為には、翻訳箇所に翻訳関数を埋め込む必要があります。
次の2つのコードは、役割は同じですが、翻訳ファイルをカテゴライズする為に使い分けます。与えられた文字列を翻訳がある場合は翻訳し、そうでなければ何も変更せずに返します。
<!-- テーマに関連するコードの場合 -->
<h2><?php echo __('記事タイトル') ?></h2>
<!-- baserCMSの管理システムに関連するコードの場合 -->
<h2><?php echo __('baser', '記事タイトル') ?></h2>
通常、翻訳対象となる文字列は、世界共通語である英語を使う事が多いですが、日本産のbaserCMSコアの開発方針として、日本語を利用しています。なお、プラグインやテーマなど baserCMSコア以外の開発については、この限りではありません。
Javascript 上の翻訳箇所については、PHP上で翻訳を行い、ヘルパーの機能を利用して引き渡す事を推奨しています。
// Javascript 上にて i18n 用の変数を宣言する。一回のレンダリング内にて、必ず一度宣言が必要。
// ※ 管理システムの場合は、HTMLヘッダー内にて既に宣言されているので不要です。
echo $this->BcBaser->declarationI18n();
// コンテンツ本体内での定義
$this->BcBaser->i18nScript([
'commonCancel' => __d('baser', 'キャンセル'),
'commonSave' => __d('baser', '保存')
]);
// コンテンツ本体以外での定義(echo と inline オプションが必要)
$this->BcBaser->i18nScript([
'commonCancel' => __d('baser', 'キャンセル'),
'commonSave' => __d('baser', '保存')
], ['inline' => true]);
// Javascript 内にて変数を参照する
alert(bcI18n.commonCancel);
alert(bcI18n.commonSave);
翻訳関数の埋め込みが完了したら、次に pot ファイルの作成を行います。
pot ファイルは、baserCMS内の全ての翻訳可能文字列のテンプレートとなり、CakePHPの
I18Nシェル
を利用し、一括で作成します。
開発環境に Docker を利用している場合
docker exec -it {コンテナ名} /bin/bash
# basercms-4.1 というコンテナにログインする場合
docker exec -it basercms-4.1 /bin/bash
app/Console/cake i18n extract —overwrite —extract-core no —merge no —paths {翻訳対象のフォルダ} —output {pot ファイルの出力先}
# baserCMSの管理システムの pot ファイルを更新する場合
app/Console/cake i18n extract --overwrite --extract-core no --merge no --paths /var/www/html/lib/Baser/ --output /var/www/html/lib/Baser/Locale
処理が完了すると、 /lib/Baser/Locale/ 内の、default.pot と baser.pot が上書更新されます。
pot ファイルを更新したら、次はいよいよ翻訳です。
翻訳方法 のページを参考に翻訳を開始してください。