CakePHP3-多言語化 I18nシェルについて

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ファイルの作成方法です。

短縮した方法もあるようなので、それはこちらを確認してください。