CakePHP の国際化機能は、 po files を翻訳のソースとして使います。POファイルは Poedit のようなツールで簡単に編集できます。
CakePHP の i18n コマンドは、手軽に potファイル(poテンプレートファイル)を生成します。 翻訳者は、これらのテンプレートファイルを使ってアプリケーションの翻訳作業を行ないます。 翻訳が更新された pot ファイルは既存の翻訳とマージされます。
extract
コマンドを使って、既存のアプリケーションのために
POT ファイルを生成することができます。
このコマンドはアプリケーション全体から
__()
形式の関数をスキャンし、メッセージ文字列を
抽出します。アプリケーション中のユニークな文字列は
それぞれひとつの POT ファイルの中にマージされます。
.. code-block:: console
bin/cake i18n extract
上記は、抽出シェルを実行します。 このコマンドの結果は、
resources/locales/default.pot ファイルになります。
pot ファイルは、 po ファイルを作成するためのテンプレート
として使用します。もし、手動で pot ファイルから po ファイルを
作成するなら、 Plural-Forms
ヘッダー行を正しく設定してください。
特定のプラグインで使用される POT ファイルを生成することができます。
bin/cake i18n extract --plugin <Plugin>
これにより、プラグインで使用される必要な POT ファイルが生成されます。
複数ディレクトリから文字列の抽出が必要なこともあるでしょう。
例えば、アプリケーションの config
ディレクトリー内の
いくつかの文字列を定義している場合、 src
ディレクトリと
同様にこのディレクトリーからも文字列を抽出したくなる
はずです。
それには --paths
オプションを使用することができます。
そのオプションに抽出する絶対パスをカンマ区切りリストで
渡します。
bin/cake i18n extract --paths /var/www/app/config,/var/www/app/src
除外したいフォルダーをカンマ区切りで指定します。指定された値に含まれるパスは無視されます。
bin/cake i18n extract --exclude vendor,tests
--overwrite
を追加することで、 POT ファイルが存在しても警告されず、
デフォルトで上書きされます。
bin/cake i18n extract --overwrite
デフォルトで、抽出シェルスクリプトは CakePHP コアライブラリー中で使われているメッセージを
抽出するかどうか訊ねます。 --extract-core
に yes か no を設定することで、
デフォルトの動作を指定できます。
bin/cake i18n extract --extract-core yes
// または
bin/cake i18n extract --extract-core no