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を最初使ってみましたけど、直接にファイル編集したほうが早そうです。
- - 関連記事 -
- strpos() や strcmp() など間違えやすいif文での判定
- htmlentities() と htmlspecialchars() の違い
- PHPの内部エンコードと出力文字コード、スクリプト文字コード
- PHPのデバッグ・xdebugをxamppで有効にする
- コマンドラインでPHPが起動できない
- 直接ファイルが実行されたときだけ起動するスクリプト
- ディレクトリを探索してリンク一覧表示
- PHPとRubyのコードの書き方を比較
- コメントアウトの使い分けと、/*** ~ ***/とか// — を単語登録
- PHPでvar_dump()を使ったお手軽デバッグコード
- プログラミング練習問題をPHPで解いてみた
- CakePHPはMVCかつフルスタックのフレームワーク
- PHP5のクラス定義とオブジェクトのおさらい
- フレームワークCakePHPにチャレンジ
- sort・asort・ksort 配列を並べ替える関数
- foreach構文
- PHPの配列
- strcmp関数
- strcasecmp関数
- PHPヒアドキュメント