CakePHP3でサイトを翻訳する際、POTファイルを作成しないといけません。
POTファイルはI18nシェルを使えば簡単に作成できるので、その手順を書いていきます。
1.まずはI18nシェルの実行方法です。このコマンドを実行してください。
bin\cake i18n
すると、以下の様にに表示されると思いますので、「E」を選択してください。
Welcome to CakePHP v3.1.13 Console
---------------------------------------------------------------
App : src
Path: C:\xampp\htdocs\test\src\
PHP : 5.4.16
---------------------------------------------------------------
I18n Shell
---------------------------------------------------------------
[E]xtract POT file from sources
[I]nitialize a language from POT file
[H]elp
[Q]uit
What would you like to do? (E/I/H/Q)
>
2.どこから翻訳元テキストを抽出するか確認されます。
デフォルトはsrc\内から抽出されるようです。
変更が無い場合はエンターを押して、変更したい場合は、抽出対象にするディレクトリのパスを入力してください。
Current paths: None
What is the path you would like to extract?
[Q]uit [D]one
[C:\xampp\htdocs\test\src\] >
もう一度同じ確認が入るので、複数のディレクトリ内から抽出する場合は、パスを入力して、そうでないなら「D」を選択してください。
3.CakePHPのコアライブラリからメッセージを抽出するか確認されるので、抽出対象にするなら「y」で、抽出しないなら「n」を選択してください。
Would you like to extract the messages from the CakePHP core? (y/n)
[n] >
4.POTファイルをどこに作成するかを確認されます。
デフォルトは、src\Locale内に作成されるようです。
変更が無い場合はエンターを押して、作成する場所を変更する場合は、そのディレクトリのパスを入力してください。
What is the path you would like to output?
[Q]uit
[C:\xampp\htdocs\test\src\Locale] >
5.抽出した翻訳元テキストをdefault.potにまとめるかどうか確認されます。
「n」を選択すると「cake.pot」「cake_console.pot」「debug_kit.pot」「default.pot」など、どこで使用するかで分けられるようです。
「y」ならdefault.potひとつにまとめられて出力されます。
Would you like to merge all domain strings into the default.pot file? (y/n)
[n] >
以上の確認が終わると、指定のディレクトリから翻訳元テキストが抽出されて、指定の場所にPOTファイルが作成されます。
もし既に同じ場所にPOTファイルがある場合上書きされるか確認されるので、上書きするなら「y」を選択して、上書きしたくないなら「n」を選択してください。「n」選択した場合は、どんなファイル名で保存するか確認されるので、保存したファイル名を入力してください。
Error: cake.pot already exists in this location. Overwrite? [Y]es, [N]o, [A]ll (y/n/a)
[y] >
以上がI18nを使ったPOTファイルの作成方法です。
短縮した方法もあるようなので、それはこちらを確認してください。