Ruby-GetText-Package開発者向けドキュメント
ruby-gettext-dev
提供する機能
ライブラリ
- GetText._(msgid), GetText.n_(msgid), GetText.N_(msgid), GetText.s_(msgid)メソッドで各言語に翻訳(ローカライズ)されたメッセージを取得。
- 出力する文字コードを環境によって自動的に変換・取得する。ただし、この機能はIconvモジュールに依存しているため、Iconvモジュールの無い環境では変換はできず、翻訳ファイル(メッセージカタログ)の文字コードのまま出力される(Ruby-GNOME2が提供されている場合は変換可能)。
- Iconvモジュールの無い環境でも、Ruby-GNOME2(Ruby/GTK2)が使用可能な環境であればIconv.iconvというモジュール関数を提供する(gettext/iconv.rb)。この機能は標準で提供される。
- どの言語・文字コードで出力するかは環境変数から判断する(プログラム中で設定することも可能)。
詳細はRuby-GetText-Package APIリファレンスを参照してください。
ツール
Ruby-GetText-Packageは、rgettext, rmsgfmtという二つのツール(実体は同機能のライブラリを呼び出すだけですのでライブラリの方を使うこともできます)を提供しています。どちらも開発時に使うものです。 Ruby-GetText-Pacakgeが提供するツールについてを参照してください。
制限事項
式展開
式展開("#{...}"形式)は使うことができません。代わりに"%"等を使ってください。
(例) name = "ruby"のとき
_("it's #{name}") => _("it's %{name}") % {:name => name}
次のようにすることもできます。
_("it's #{name}") => _("it's %s") % name
翻訳者は文字列だけを見て翻訳する場合が多いので、前者の方法(%{name}を使う方法)をオススメします。
ヒアドキュメント(行指向文字列リテラル)
現在、ヒアドキュメントも使うことができません。これは将来的にはサポートされるかもしれません。
ただし、かわりに%Q記法を使用することはできますのでそちらを代用してください。
print _(%Q[ the string next line ])
基本用語説明
- pot, poファイル
- スクリプトファイルからrgettextツール(あるいはrakeのupdatepoタスク)を使用して生成されたテキストファイル(msgidとmsgstrの対)。元となるテンプレートファイルはpotという拡張子をつけ、それを言語毎に翻訳したものをpoファイルという拡張子をつけます。
- moファイル
- msgidとローカライズされた文字列の対が入っているバイナリファイル。poファイルからrmsgfmtツール(あるいはrakeのmakemoタスク)を使用して生成します。言語毎に必要です。moファイルはライブラリのみが参照するファイルで、翻訳者は一切関与しません。
- domain(TextDomain)
- domainとは要はmoファイルの名称(拡張子は.mo)です。GNOME等でPACKAGE名と呼ばれることが多いです。通常はアプリケーション・ライブラリにつきそれぞれ1つずつですが、本ライブラリではモジュール・クラス単位で(かつ、1つのモジュール・クラスに複数)指定できるようになっています。ただし、rgettextとの親和性を考慮すると現実的には少なくともファイル単位より大きい単位になると思います。
開発手順
Ruby-GetText-Packageを用いた開発手順を"Ruby-GetText-Package 開発手順"に書いてみました。
環境変数
LC_ALL, LC_CTYPE, LC_MESSAGES, LANG
ロケールを指定する。ja_JP.eucJP, ja_JP.UTF-8等。UNIX環境では指定しない場合はC(英語)になり、Windowsの場合はシステムで使用しているロケールが(UNIXのロケールに変換されて)利用される)。
$export LC_ALL="ja_JP.eucJP"
OUTPUT_CHARSET
出力する文字コードを強制する。UTF-8, euc-jp等。通常は指定不要。
$export OUTPUT_CHARSET="euc-jp"
GETTEXT_PATH
カタログファイル(moファイル)のPATHを強制的に指定する。デバッグ時に利用する。","で区切って複数指定できる。
- NIX $export GETTEXT_PATH="/home/foo/yourapp/locale,/usr/share/locale"
MS Windows >set GETTEXT_PATH=/home/foo/yourapp/locale,/usr/share/locale
ユーザにお願いすること
本ライブラリを用いて開発したツールを使用する場合は、事前に以下の情報を設定してもらう必要があります。
- 環境変数LANG, LC_ALL等を適切に設定してもらうこと(MS Windowsの場合は指定されていない場合はシステムのロケールが使用されます)
- 環境変数OUTPUT_CHARSETを適切に設定してもらうこと(これは必須ではないです。文字化けのときに対応してもらってください)
- 事前にIconvモジュールをインストールしてもらうこと(これも出力時の文字コードがpoファイルの文字コードと同じであれば不要です)
キーワード:
参照:[Ruby-GetText-Package]