gettext
出典: フリー百科事典『ウィキペディア(Wikipedia)』
| gettext | |
|---|---|
| 開発元 | GNUプロジェクト |
| 最新版 | 0.17 / 2007年11月11日 |
| 対応OS | クロスプラットフォーム |
| 種別 | ライブラリ |
| ライセンス | GPL |
| 公式サイト | http://www.gnu.org/software/gettext/ |
gettextは国際化ライブラリの構成要素の一つであり、多言語対応のソフトウェアを開発する際に用いられる。
目次 |
[編集] gettextによるソフトウェア国際化
[編集] プログラマ
まず、gettextが利用されるようソースコードの修正を行なう。これはほとんどのプログラミング言語において、ソースコード中の文字列がまずgettext関数へ渡されるよう、文字列をラップしていく作業となる。キータイプの手間を省くため gettextには通常 _ のエイリアスが付けられる。C言語では、
printf("My name is %s.\n", my_name);
を以下のように変更する:
printf(_("My name is %s.\n"), my_name);
C言語以外にもgettextは以下の言語/シェルコマンドで実装されている: C++、Objective-C、Bourne Shell、Bash、Python、GNU CLISP、Emacs Lisp、librep、GNU Smalltalk、Java、GNU Awk、Pascal、wxWidgets (WxLocaleクラスによる)、YCP、Tcl、Perl、PHP、Ruby、Pike。ほとんどの場合、使用方法はC言語の場合と同様である。
ソースコード修正後、xgettextコマンドを用いて翻訳可能な全ての文字列のリストを保持する .potファイル(「テンプレート」とも呼ばれる)を生成する。.potファイル中のエントリは以下のようになる:
#: src/name.c:36 msgid "My name is %s.\n" msgstr ""
文字列の直前にコメントを置くと、ヘルパプログラムはコメントを翻訳者へのヒントとして扱う。
// TRANSLATORS: %s はそのままにして下さい。プログラムが変更します。 // いつも翻訳ありがとうございます。 printf(_("My name is %s.\n"), my_name);
この例では、コメントは TRANSLATORS: で始まる。そして xgettext は .pot テンプレートファイルを作成する際に翻訳者のためにそのコメントを抽出する
xgettext --add-comments=TRANSLATORS:
生成された .pot ファイルにはこのようなコメントが付く。
#. TRANSLATORS: %s はそのままにして下さい。プログラムが変更します。 #. いつも翻訳ありがとうございます。 #: src/name.c:36 msgid "My name is %s.\n" msgstr ""
[編集] 翻訳者
翻訳者はまず、上記のテンプレートを入力として、msginitコマンドにより、翻訳リソースファイル(.poファイル)の初期状態のものを生成し、それに対して翻訳作業を行っていく。日本語への翻訳作業を行なう場合であれば、
msginit --locale=ja --input=name.pot
を実行し、これにより ja.poファイルが生成される。ファイル内部のエントリは以下のようになる:
#: src/name.c:36 msgid "My name is %s.\n" msgstr "My name is %s.\n"
翻訳者は手作業あるいは poEditのようなツールによりこれらを編集する。編集後は以下のようになる:
#: src/name.c:36 msgid "My name is %s.\n" msgstr "私の名前は %sです。\n"
最終的に、.poファイルは msgfmtコマンドにより .moのバイナリファイルにコンパイルされ、この状態で、該当ソフトウェアパッケージの一部として配布されることになる。
[編集] ユーザ
UNIXライクなシステムにおけるユーザは、LANGUAGEの環境変数をセットすることで(.moファイル中に該当言語のリソースがありさえすれば)、アプリケーションにその言語による表示を行わせることができる。
[編集] 外部リンク
|
||||||||||||||||

