パッケージの多言語化 (R Commander plug-in 編)

まずはディレクトリ構成とファイル配置を見てみましょう。

ディレクトリ構成とファイル配置

R Commander plug-in では、通常の R package に必須な "/man" と "/R" の他に、"/inst/etc" にメニューファイルを追加する事がほとんどだと思います (メニュー無しで動作するように作れば配置は不要で、メニューの翻訳も不要)。
メニューファイルを差し替えないで、多言語化を行いたい場合は、"/inst/po/(言語名)/LC_MESSAGES" に mo ファイルを配置する必要があります。
上のスクリーンショットには "/po" というディレクトリがありますが、これは mo ファイルを作るために必要なファイル群 (po ファイルや pot ファイル) を配置しておくディレクトリです。無くても Rcmdr CHECK は怒りませんが、他の人が言語を追加する場合にはあった方が良いので、配置しておいた方が良いと思います。

mo ファイルを作るには、po ファイルを作成する必要があります。
編集用ソフトウェアとしては poEdit があります。 poEdit を起動して新規カタログを作ると、gettext というプログラムを呼んで翻訳対象 (翻訳が必要な部分; 何らかの決まりで入力されているので、それを特定するルールをオプションで渡す) をリストアップしようとします。 R Commander plug-in のメニューファイルの場合、色々オプションを弄ってもうまくリストアップ出来ずにエラー終了してしまいます。
翻訳対象がそれほど多くない場合ならば、直接テキストエディタで編集してしまっても良いでしょう。

RcmdrPlugin.EstOR Package を参考にして、編集の流れを書いてみます。
以下は、"/inst/etc/menu.txt" の内容です。


  #type	menu/item	operation/parent	label	command/menu	activation	install?
  item	modelsMenu	command	"Estimate odds ratio"	EstOR.button	"activeModelP()"	""
  

"Estimate odds ratio" の部分 (label) がメニューバーに表示される文字列・翻訳対象です。
翻訳対象を po ファイルにリストアップして記載し、翻訳語を追加して、mo ファイルに変換してゆきます。
以下は po ファイルのサンプル、"ja.po" の内容です。


  msgid ""
  msgstr ""
  "Project-Id-Version: RcmdrPlugin.EstOR 1.0-2\n"
  "POT-Creation-Date: \n"
  "PO-Revision-Date: \n"
  "Last-Translator: Kengo Nagashima <メールアドレス>\n"
  "Language-Team: \n"
  "MIME-Version: 1.0\n"
  "Content-Type: text/plain; charset=utf-8\n"
  "Content-Transfer-Encoding: 8bit\n"
  "X-Poedit-Language: Japanese\n"
  "X-Poedit-Country: JAPAN\n"
  "X-Poedit-SourceCharset: utf-8\n"
  "X-Poedit-KeywordsList: \n"

  msgid "Estimate odds ratio"
  msgstr "オッズ比の推定"
  

下2行の msgid と msgstr の対が翻訳対象と翻訳語の組です。上2行は消しても良いみたいですが、poEdit で po ファイルを生成するとついてくるので、つけてみました。
翻訳対象 (msgid) を全て書き、それ以外の部分は空っぽにしておいて、poEdit 上で編集するとラクでした (空の po ファイル)。
poEdit で上の空ファイルを開き、プロジェクトの設定と翻訳語の追加を行います。

poEditのメニュー

poEditのプロジェクト設定

このあたりを適当に設定します。
パスとキーワードを下手に設定するとエラーが出てしまうので、R Commander plug-in 用に使うなら触らない方が良いかもしれません。

poEdit上での翻訳作業

一番上の小窓で翻訳対象を選択し、一番下の小窓に翻訳語を打ち込みます。

翻訳完了

翻訳語を打ち込んで保存すると、mo ファイルを一緒に生成してくれます。
msgfmt コマンドで mo ファイルを作ってもよいですが、こちらの方が効率的でしょう。

作成した mo ファイルのファイル名を、"R-(パッケージ名).mo" に変更します (package 名が RcmdrPlugin.EstOR の場合は "R-RcmdrPlugin.EstOR.mo")。
最後に mo ファイルを "/inst/po/(言語名)/LC_MESSAGES" に配置し、Rcmdr BUILD すると多言語化パッケージが完成します。

pot ファイルについて (2010/03/02 補足)

pot ファイルは、poEdit 用翻訳テンプレートファイルです。
これは、翻訳対象だけを抜き出したもので、好きな言語で翻訳語を追加できるようになっています。
具体的にいうと、以下のように、上で作った po ファイルの msgstr の部分を全て空にして、拡張子を pot に変えたものです (pot ファイル)。


  msgid "Estimate odds ratio"
  msgstr ""
  

履歴

  • 2010/03/02 公開