Ploneのプロダクトの日本語化方法
Plone User's Group JapanでクリスマスまでPlone/Zopeアベントカレンダーが進行中。これは毎日リレー形式でPloneやZopeのTipsを紹介していくというもの。僕にもバトンが回ってきたので、プロダクトの日本語化の方法を説明しよう。
オープンソースCMSのPloneには世界中の開発者が提供する様々なプロダクトがあり、Ploneにインストールするだけで機能を拡張できるのでとても便利。ただ残念なことに表示やメッセージが英語のままなので、イントラネットのように一般社員に使ってもらうのは敷居が高いイメージとなりがちだ。でも実はメッセージ部分は「.po」の拡張子の別ファイルになっていることが多く、このメッセージファイルを翻訳するだけで簡単に大半の表記を日本語にすることができる。もちろん既に日本語化されている場合でも、業種や用途によって用語を変えたいこともあるだろう。そんなときも、このファイルを修正すればいい。
.poファイルの場所
翻訳ファイルはそのProductフォルダの次の場所にある。例えばbuildout環境でPloneFormGenをインストールすると、
buildout-cache/eggs/Products.PloneFormGen-1.5.4-py2.4.egg/Products/PloneFormGen/i18n/
以下にメニューの表記等が記載された「plone-ploneformgen-ja.po」があり、
buildout-cache/eggs/Products.PloneFormGen-1.5.4-py2.4.egg/Products/PloneFormGen/locales/ja/LC_MESSAGES
以下に日本語の表示メッセージ等を含んだ「ploneformgen.po」とそれをバイナリ化した「ploneformgen.mo」がある。
ここで注意しておきたいのは 「PloneFormGen」のように昔からあるプロダクトだと「i18n」以下にも翻訳が必要な.poファイルがあるが、これは古い手法で、Plone3移行に推奨されているのは、「/locales/ja/LC_MESSAGES」といったようにlocales以下に、翻訳ファイルを配置する方法になる。
翻訳作業の実際
翻訳作業はUTF-8に対応したエディタを使って行う。以下のような表記の「Default:」に記載されている英文を翻訳して「msgstr」に記載する。ときには非常に長いメッセージもあるので、あきらめずに翻訳していこう。
#. Default: "A folder which can contain form fields." #: content/form.py msgid "A folder which can contain form fields." msgstr "フォームフィールドを含むフォルダ" #. Default: "A folder which creates a form view from contained form fields." #: content/form.py msgid "A folder which creates a form view from contained form fields." msgstr "含まれているフォールフィールドからフォームビューが作られるフォルダ" #. Default: "Mailer Adapter" #: content/formMailerAdapter.py msgid "Mailer Adapter" msgstr "メールアダプタ" #. Default: " A form action adapter that will e-mail form input. " #: content/formMailerAdapter.py msgid " A form action adapter that will e-mail form input. " msgstr "入力からメールを送信するフォームアクション・アダプタ"
翻訳ファイルを有効にする
翻訳したらそのファイルを有効にする必要がある。通常「plone-ploneformgen-ja.po」のように「i18n」直下のファイルは翻訳したものを配置するだけで有効になることが、「/locales/ja/LC_MESSAGES」以下の翻訳ファイルは、メッセージカタログをバイナリ化する「MSGFMT(MessageFormat」というツールを使用する。このツールはLinuxやMacOS X Snow Leopardでは開発ツールをインストールすると標準でインストールされる。使い方は次のように、出力するファイル名と元ファイル名を指定。
$ msgfmt -o (出力ファイル名).mo (出力ファイル名).po
$ msgfmt -o ploneformgen.mo ploneformgen.po
「.mo」ファイル生成がエラーなく完了したら一度インスタンスを再起動する。これで翻訳した日本語が表示されるようになる。
皆さんも翻訳されたら独り占め(?)せずにぜひプロジェクトにコミットをいただきたい。もしコミットが難しいときはPloneのMLにお知らせを。お手伝いします。
では、次はいつもサスペンダー+ズボンに縦縞のオシャレなシャツとスーツ姿のJackさんにバトンをお願い。
前: メールだけでどこまで更新できるか?

