CakePHPの日本語対応、国際化

スポンサーリンク
スポンサーリンク
ライフスタイル関連のコンテンツ
お金 | 仕事 | 勉強 | プライベート | 健康 |
プログラミング関連のコンテンツ
C言語/C++入門 | Ruby入門 | Python入門 | プログラミング全般

以下のページを参考にして、国際化を行う。
poファイルの編集には、便利なPoeditというエディタがあるらしい。
フレームワークを使うと、国際化も比較的簡単に出来るのですね。
翻訳作業は、必要になるのでしょうけど。

スポンサーリンク

CakePHP のおいしい食べ方: CakePHP1.2の簡単国際化
CakePHPで国際化の方法を試してみました : アシアルブログ
1.2系の多言語対応メモ(1) – Writing Some Code
http://pm.11op.net/2007/12/cake-12-prebeta.php
CakePHP 1.2 日本語化
gettext – Wikipedia
gettext – Wikipedia
http://www.poedit.net/

一通り、翻訳作業が終わったので、まとめの追記。バージョンはCakePHP1.2.5。
以下、poファイルを利用しての翻訳手順。データベースを使う方法もあるみたいだが、今回はpoファイルの方法で。

1.CakePHPのViewで使用する文字を、()関数で囲む

__('Hello') のように、Viewファイルなどの文字列を、__()関数で囲むと自動的に翻訳ファイルを作ってくれる。

2.consoleから、翻訳リソースファイルを自動作成

consoleフォルダに移動、またはconsoleフォルダにパスを通して、
> cake i18n
と、コマンドを実行。

>cake i18n
Welcome to CakePHP v1.2.4.8284 Console
---------------------------------------------------------------
App : app
Path: apppath
---------------------------------------------------------------
I18n Shell
---------------------------------------------------------------
[E]xtract POT file from sources
[I]nitialize i18n database table
[H]elp
[Q]uit
What would you like to do? (E/I/H/Q)
> E
What is the full path you would like to extract?
Example: apppath
[Q]uit
[apppath] > apppath
What is the full path you would like to output?
Example: apppath\locale
[Q]uit
[apppath\locale] > [Enter]

Eを選択で、POTファイルとして翻訳リソースファイルを作成する。
その後、CakePHPのappフォルダ(アプリケーションフォルダ)のパスを指定する。上記コマンド実行のapppathの部分。
自動でアプリケーション内のファイルを調べ、翻訳リスト一覧が、default.potファイルとしてlocaleディレクトリに生成される。

3.日本語リソースフォルダの作成

\locale\jpn\LC_MESSAGES フォルダを作成後、2で生成されたdefault.potファイルをコピーして、"\locale\jpn\LC_MESSAGES\default.po"ファイルを作成。

4.poファイルを編集

【poファイルを直接編集】
poファイルを見てみると・・・
————————————————–
msgid "Invalid Customer."
msgstr ""
————————————————–
のペアが延々と並んでいる。
対訳した語を、msgstr "" の部分に入力していく。
————————————————–
msgid "Invalid Customer."
msgstr "無効なユーザーです。"
————————————————–
と、すべてのmsgstrを訳語で埋めたらファイルを保存。

【Poeditで編集】

http://www.poedit.net/

・初期設定
Poeditは、デフォルトでmoファイルを自動生成するので、とりあえず、[ファイル]→[設定]→[編集] から、moファイル自動生成を無効にしておく。
[カタログ]⇒[設定]から、この翻訳ファイルに関する情報、名前やメアドなどを追加。
また、[複数形:]という部分を、「nplurals=1; plural=0;」に設定。
・ファイルの編集
Poeditを起動後、[ファイル]⇒[開く]から、\locale\jpn\LC_MESSAGES\default.po ファイルを開き編集。
翻訳対象の原文を選択後、下側の入力フォームに対訳を入力する。

5.ブラウザ確認、翻訳言語の指定

HTTP_ACCEPT_LANGUAGE の値から勝手に日本語化を行う。
翻訳言語を指定する場合は、beforeFilter() などに、
Configure::write('Config.language',"en");
を記述する。

6.新しくViewファイルなどに文字列を追加した場合

再び、2の「cake i18n」コマンドを実行すると、potファイルが最新の情報を元に作られる。
poedit →[カタログ]→[POTファイルを元に更新します]を選択し、新しい“potファイル”を指定する。

以上、簡単にCakePHPの翻訳を試してみました。
poファイルの編集は、Poeditを最初使ってみましたけど、直接にファイル編集したほうが早そうです。

スポンサーリンク
 
スポンサーリンク