1

Click here to load reader

Hachiojipm20110122

Embed Size (px)

Citation preview

Page 1: Hachiojipm20110122

Hachioji.pm #1 LT 多言語対応サイトの開発方法

2011-01-22 まかまか般若波羅蜜(twitter: maka2_donzoko)

Web サービスを開発する際、多言語対応しなければならいことがあると思いますが、みなさん

どういう風にやってます?

■言語分のテンプレートを用意?

template/ja

template/en

■gettext 系を利用?

_("こにゃにゃちわ!") en → Hello Acme!

ja → こんにちは!

■最近自分がとったやり方……上記のハイブリット型?

オリジナルテンプレートを監視。修正がかかる度に翻訳処理し言語別テンプレートを生成。

・翻訳パート

※poファイルの生成には App::I18N のユーティリティを利用

$ po parse template_org → po/webapp.pot

$ po lang en → po/en.po

$ po lang ja → po/ja.po

……タグ付け

_("%1 様",<: $user :>)

$ po parse template_org → po/*.po 生成

……翻訳

msgid "%1 様"

msgstr "Dear %1."

・デザイナーによるテンプレート修正作業

template_orig/root/hello.tx ※template_org下を Filesys::Notify::Simple*などで監視

↓ 追加 or 修正!

自動で翻訳を適用したテンプレを所定位置に出力(正規表現と Data::Localize を利用)

template/ja/root/hello.tx

<: $user :> 様

template/en/root/hello.tx

Dear <: $user :>.

* CPAN モジュールには他にも File::ChangeNotify などがある。Filesys::Notify::Simple はプラットフ

ォーム別に最適なモジュールを同一インタフェースで使える利点がある。