![]() |
![]() ![]() ![]() |
gettext 関連の関数には次のものがあります。
------------------------------------------------------------------------ 間数名 概要 ------------------------------------------------------------------------ gettext メッセージを取得する dgettext メッセージを取得する dcgettext メッセージを取得する ngettext メッセージを取得する dngettext メッセージを取得する dcngettext メッセージを取得する bindtextdomain ドメインとディレクトリを結び付ける textdomain ドメインを選択する bind_textdomain_codeset 出力メッセージのエンコーディングを指定する _ メッセージを取得する (マクロ) N_ メッセージの取り出しを関連ツールに指示する (マクロ) gettext_noop メッセージの取り出しを関連ツールに指示する (マクロ) ------------------------------------------------------------------------最後の3つはマクロです。定義は通常以下のとおりです。
#define _(String) gettext(String) #define N_(String) gettext_noop(String) #define gettext_noop(String) (String)gettext 関連ツールはこの関数呼び出しをキーとしてソースファイルからメッ セージを取り出します。最初のマクロはさらに、プログラム実行時に gettext() を呼び出します。
# $NLS-WWNAVI 2008-05-24T17:48:21+0900 msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2008-05-24T17:48:21+0900\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME\n" "Language-Team: LANGUAGE \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" <-- *エンコーディング名 "Content-Transfer-Encoding: 8bit\n" # Test.c msgid "Failed to create fontset\n" <-- *メッセージID msgstr "Failed to create fontset\n" <-- *メッセージ msgid "Hello, how are you? This is sample for gettext. (Push .)" msgstr "Hello, how are you? This is sample for gettext. (Push .)"
msgfmt -o wwnavi_get.mo wwnavi_get.pot
setlocale (LC_ALL, ""); <-- *main関数内に記述。 bindtextdomain("wwnavi_get", "."); <-- *main関数内に記述。 textdomain("wwnavi_get"); <-- *main関数内に記述。 ... printf(_(N_("Failed to create fontset\n"))); <-- *メッセージ読み込み
export LANG=en_US.UTF-8 ./Test export LANG=ja_JP.UTF-8 ./Test.moファイルは以下に配置可能です。
./en/LC_MESSAGES/wwnavi_get.mo <-- *英語メッセージファイル ./ja/LC_MESSAGES/wwnavi_get.mo <-- *日本語メッセージファイル