Hatena::Groupcatalyst

dann@catalyst このページをアンテナに追加 RSSフィード

2008-02-17

Catalystでマルチバイト

| 20:57 |  Catalystでマルチバイト - dann@catalyst を含むブックマーク はてなブックマーク -  Catalystでマルチバイト - dann@catalyst  Catalystでマルチバイト - dann@catalyst のブックマークコメント

hide-kさんの素晴らしいまとめ。

http://blog.hide-k.net/archives/2007/03/catalyst_2.php

ユーザーの入力、DBの入出力、ユーザーへの出力の3点で気をつける必要がある。Perlの場合、UTF-8フラグ周りの文字化けではまりがちなので、その点上記を抑えておけばはまりどころが殆どない。

アプリケーションの文字コードと国際化の全体方針は最初に決めておいたほうがよくって、こういうのはstarterでやっておくのがいいかなと。starterには組み込み済み。

Catalystでi18n

| 20:32 |  Catalystでi18n - dann@catalyst を含むブックマーク はてなブックマーク -  Catalystでi18n - dann@catalyst  Catalystでi18n - dann@catalyst のブックマークコメント

Catalyst::Plugin::I18Nを使う。

これを使うことで、locメソッドが使えるようになる。

メッセージの国際化の方法

Pelrモジュール

$c->loc('Hello World');

TT内

[% c.loc('Hello World') %]

で、localeに応じた切り替えが可能。

POファイルの置き場所

poファイルは、MyApp/I18N/ に配備する。

POファイルの生成

catstarterで、以下のようなscriptscript/myapp_update_po.sh に生成するようにしている。

script/myapp_update_po.sh で、MyApp/I18Nにpoファイルを生成するようになる。

TTのテンプレートとPerlモジュールが国際化対象。

#!/bin/sh
(find root/templates/ -name '*.tt2' ; find lib/ -name '*.pm' )| xargs xgettext.pl -o lib/MyApp/I    18N/ja.po
(find root/templates/ -name '*.tt2' ; find lib/ -name '*.pm' )| xargs xgettext.pl -o lib/MyApp/I    18N/en.po

POファイルを生成したら、charsetはutf-8に変更しておくこと。

msgid ""
msgstr ""
"Project-Id-Version: XXX\n"
"PO-Revision-Date: \n"
"PO-Revision-Date: \n"
"Language-Team: XXX\n"
"Last-Translator: XXX\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=utf-8\n"
"Content-Transfer-Encoding: 8bit\n"

考察

Catalystにべったり依存した構造にするのであれば、これでもいいかもしれない。ただ、Catalystに依存しないようにとモジュールを作った場合に、そのモジュールがcontextにアクセスできないと国際化ができなくなるので、その点で国際化機構をCatalystのプラグインにしてしまうというのは、困ることはありそう。

国際化機構は、Catalystのフレームワークとは別の枠組みで作ったほうがいいかなというのが、今のところの印象。

TODO

  • POファイルの生成部分の改善

GalangGalang2012/10/31 00:53I suppose that sounds and smlles just about right.

serowtserowt2012/11/01 06:46dg9QAM , [url=http://lguawwokcygh.com/]lguawwokcygh[/url], [link=http://znungxozrjzp.com/]znungxozrjzp[/link], http://etsniywijzoa.com/

pcoposfcuyapcoposfcuya2012/11/01 13:21FcmCUk <a href="http://fnojtbacntmu.com/">fnojtbacntmu</a>

vgozepoqvgozepoq2012/11/02 02:125rliHl , [url=http://ishgorqhgyly.com/]ishgorqhgyly[/url], [link=http://cugddjtgnaxl.com/]cugddjtgnaxl[/link], http://xhbdujjoggle.com/

トラックバック - http://catalyst.g.hatena.ne.jp/dann/20080217