CakePHPで国際化対応してみた(Windows+xampp)


CakePHPで国際化対応してみました。日本語と英語だけですけどね。覚書として残しておこうと思います。

国際化する

以下のサイトを参考に国際化対応できます。

http://cakephp.seesaa.net/article/87269708.html

要点をまとめてみます。

  1. 文字リソースは __(”) で囲む
    第一引数だけだと出力されてしまうので、戻り値を取得する方式で使う場合は、第二引数に true 記述する
    ex 出力.  __(‘this is a pen’);
    ex 値.      $this->link( __(‘this is a link’, true), ‘/’);
  2. cake/console/cake i18n で翻訳リソースを作成
    app/locate/default.potファイルが作られます 。
  3. 各言語用の翻訳リソースファイルを作成
    無いならフォルダを作ってから、default.potファイルをコピペして、名前を変更すればOKです
    日本語: app/locate/jpn/LC_MESSAGES/default.po
    英語: app/locate/eng/LC_MESSAGES/default.po
  4. poeditを使用し、poファイルの設定変更と翻訳結果を定義する
    ここからpoeditをダウンロードして、インストールします。
    注意点: 「カタログ」-「設定」の「複数形:」を nplurals=1; plural=0; に変更する必要があります。これをやってなくて、翻訳リソースファイルが適用されず、小一時間悩みました...

終わりです。どの言語で表示するかはユーザーエージェントで判断しているようですので、他の言語での表示を確認するときや、ユーザーが選べるような機能をつける場合は、コントローラーとかで指定する必要があります。書き方は以下です。

Configure::write('Config.language',"en");

新しい文字リソースの追加後、翻訳リソースを更新する方法(デフォルトの翻訳リソース:default.pot)

前提として、xamppを C:\Projects\xampp へインストールしており、CakePHPを C:\Projects\xampp\htdocs\cakephp へ配置しているものとします。

  1. コマンドラインを起動する
  2. php.exeを使えるようにパスを通す
    set PATH=%PATH%;"C:\Projects\xampp\php\"
  3. appフォルダへ移動する
    cd "C:\Projects\xampp\htdocs\cakephp\app" 
  4. consoleのcake i18nを実行する
    ..\cake\console\cake i18n
  5. Extract POT file from source を選択
    E を入力後、Enter
  6. appフォルダのパスを入力する
    デフォルトで問題ないので、Enter
  7. extractの実施
    D を入力後、Enter
  8. localeフォルダを入力
    デフォルトで問題ないので、Enter
  9. Mergeを選択
    すでに定義した翻訳内容は残したいので、y を入力後、Enter
  10. 上書きを実施(すでに作成済みのはずなので)
    y を入力後、Enter
  11. 終了
    Q を入力後、Enter

次に、追加された文字リソースに対応する翻訳内容を定義しなければいけないので、次の項に進みます

デフォルトの翻訳リソースの更新を、各言語の翻訳リソースへマージする方法(各言語の翻訳リソース:default.po)

  1. poeditを起動する
  2. 各言語の翻訳リソースファイルを開く
  3. メニューバーの「カタログ」-「POTファイルを元に更新します」を選ぶ
    Poeditにおける更新されたpotファイルとマージ
  4. 開いたファイルダイアログで、デフォルトの翻訳リソースファイル(default.pot)を選択する
  5. 変更内容がダイアログで表示されるので確認し、OKボタンを押下する

後は、追加された文字リソースに対応する翻訳を定義して保存したら終了です。Webサイトを開きなおしてみて、反映されているか確認してみてください。

ディスカッションに参加

1件のコメント

コメントを残す

以下に詳細を記入するか、アイコンをクリックしてログインしてください。

WordPress.com ロゴ

WordPress.com アカウントを使ってコメントしています。 ログアウト /  変更 )

Google フォト

Google アカウントを使ってコメントしています。 ログアウト /  変更 )

Twitter 画像

Twitter アカウントを使ってコメントしています。 ログアウト /  変更 )

Facebook の写真

Facebook アカウントを使ってコメントしています。 ログアウト /  変更 )

%s と連携中

%d人のブロガーが「いいね」をつけました。