So-net無料ブログ作成
検索選択

Zope 3 のメッセージの国際化 [Zope 3]

なんだかゴチャゴチャしているようにも見えたけど、整理するとそうでもないか。
Plone や GNU でメッセージ翻訳をしている人には難しくないんだろう。
だんだん、自分専用メモになりつつあるが・・・
かなり、怪しい理解なので、間違ってたらつっこみを希望!

CMF/Plone と同じように、GNU gettext のフレームワークで国際化がなされている。
http://ja.wikipedia.org/wiki/Gettext

日本語(や、その他英語以外)のメッセージファイルはなくても動くので、
まず、英語メッセージで Zope3 の国際化フレームワークで動くようにパッケージを書いても良い。

翻訳単位(範囲)として translation domain というのを決める。 パッケージ単位になるのが普通。
translation domain というのを決めたら・・・

【メッセージの埋め込み】
メッセージの埋め込む場所は、大きく分けて3種類ある。
1.ZPT のメッセージ
 i18n:domaon="xxxx" でドメインを指定して、i18n:translate="yyyy" でメッセージ変換
http://www.zope.org/DevHome/Wikis/DevSite/Projects/ComponentArchitecture/ZPTInternationalizationExamples

2.Python コードのメッセージ
http://www.zope.org/Wikis/DevSite/Projects/ComponentArchitecture/Zope3Book/i18noverview.html の 10.5..1 あたり

3.ZCML の borwser schema view のメッセージ
 Message ID をブラケットで囲んで label="[label-edit] Edit" とかする。
 ブラケットで囲んであるのの次が fallback message

Message ID に意味の通る英語を書いて置けば、該当する言語のメッセージファイルがない場合は、その Message ID を fallback message として表示する
(上記 3. は fallback message の指定はちと違うけど)

【pot/.po/.mo ファイルの作り方】
基本的に GNU gettext↓ と同じく、.pot → .po → .mo の順番にファイルを作る。
http://ja.wikipedia.org/wiki/Gettext
.pot → .po は、コピーしてファイルの編集
    (poEdit とか専用のもあるし、UTF-8 が編集できる普通のエディタでも良い)
.po → .mo は、GNU の msgfmt を使う
なので、Zope 3 特有なのは、パッケージのディレクトリを指定して、その中にある
1.ZPT/2.Python/3.ZCML browser schema view からメッセージを抽出して .pot を作成する操作。

Zope3 に含まれる i18nextract というコマンドで、オプションに
-p パッケージの保存してあるディレクトリ
-d translation domain
-o 出力するディレクトリ
を指定する。

【translation domain と .mo ファイルの指定】
ZCML で i18n_domaon="xxxxx" としてtranslation domain の指定
.mo ファイルのありかは i18n:registerTranslations directory="yyyyy" とディレクトリを指定しする
そうすると、Zope3 君は、yyyyy/ja/LC_MESSAGE/xxxxx.mo に、日本語メッセージの .mo ファイルがないか探す。

(その他参考リンク)
GNU gettextユーティリティ
http://ring.atr.jp/archives/doc/gnu-info-j/gettext/gettext-ja.html


nice!(0)  コメント(0)  トラックバック(0) 
共通テーマ:パソコン・インターネット

nice! 0

コメント 0

コメントを書く

お名前:
URL:
コメント:
画像認証:
下の画像に表示されている文字を入力してください。

トラックバック 0

この記事のトラックバックURL:
※言及リンクのないトラックバックは受信されません。