Gettext
導入
gettext 関数は、NLS (Native Language Support) API を実装するもので、 PHP アプリケーションを国際化する際に使用することが可能です。 これらの関数の詳細については、システムの gettext ドキュメントを 参照するか、 » http://www.gnu.org/software/gettext/manual/gettext.html のドキュメントをごらんください。要件
以下の関数を使用するには、» http://www.gnu.org/software/gettext/gettext.html から GNU gettext パッケージをダウンロードし、インストールする必要があります。インストール手順
PHP で GNU gettext サポートを有効にするには、オプション --with-gettext[=DIR] を追加する必要が あります。ただし、DIR は gettext をインストールするディレクトリで、 デフォルトは /usr/local です。実行時設定
設定ディレクティブは定義されていません。リソース型
リソース型は定義されていません。定義済み定数
定数は定義されていません。目次
- bind_textdomain_codeset — DOMAIN メッセージカタログから返されるメッセージの文字エンコーディングを指定する
- bindtextdomain — ドメインのパスを設定する
- dcgettext — 単一の参照に関するドメインを上書きする
- dcngettext — dcgettext の複数形版
- dgettext — 現在のドメインを上書きする
- dngettext — dgettext の複数形版
- gettext — 現在のドメインのメッセージを参照する
- ngettext — gettext の複数形版
- textdomain — デフォルトドメインを設定する
gettext
gettext — 現在のドメインのメッセージを参照する
説明
string gettext ( string message )現在のドメインのメッセージを参照します。
パラメータ
- message
-
返り値
翻訳テーブルに翻訳文字列が見つかった場合にその文字列、 あるいは見つからなかった場合に元の文字列を返します。例
例 721. gettext() のチェック
<?php
// ドイツ語に設定します
setlocale(LC_ALL, 'de_DE');
// 変換テーブルの場所を指定します
bindtextdomain("myPHPApp", "./locale");
// ドメインを選択します
textdomain("myPHPApp");
// 翻訳内容は ./locale/de_DE/LC_MESSAGES/myPHPApp.mo から検索されます
// テストメッセージを出力します
echo gettext("Welcome to My PHP Application");
// あるいは、gettext() のかわりに _() も使用可能です
echo _("Have a nice day");
?>
注意
注意: You may use the underscore character '_' as an alias to this function.参考
setlocale() |
gettext
出典: フリー百科事典『ウィキペディア(Wikipedia)』 (2025/02/20 02:59 UTC 版)
開発元 | GNUプロジェクト |
---|---|
最新版 | |
リポジトリ | |
対応OS | クロスプラットフォーム |
種別 | ライブラリ |
ライセンス | GPL (0.17以後のlibintlはLGPLに改変 以前はGPL その他全てはGPL) |
公式サイト | https://www.gnu.org/software/gettext/ |
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、JavaScript。ほとんどの場合、使用方法は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 ""
翻訳者は手作業あるいは Poeditのようなツールによりこれらを編集する。編集後は以下のようになる:
#: src/name.c:36
msgid "My name is %s.\n"
msgstr "私の名前は %sです。\n"
最終的に、.poファイルは msgfmtコマンドにより .moのバイナリファイルにコンパイルされ、この状態で、該当ソフトウェアパッケージの一部として配布されることになる。
ユーザ
UNIXライクなシステムにおけるユーザは、ロケールLANGUAGEを環境変数LANG
にセットする。ここでLANGUAGEは、IETF言語タグに基づく値である。
LANG=LANGUAGE
[2]
例えばシステムのエンコーディングがUTF-8であり日本国 (JP) の日本語 (ja) を話すユーザの場合、LANGUAGEは(IETF言語タグのハイフォンをアンダースコアに置き換えて)ja_JP.UTF-8
をとる。
LANG=ja_JP.UTF-8
システムが環境変数より翻訳リソースを検索し(.moファイル中に該当言語のリソースがありさえすれば)、アプリケーションにその言語による表示を行わせることができる。
脚注
- ^ "gettext-0.23 released [stable"]; 作品または名前の言語: 英語; 出版日: 2024年12月1日; 閲覧日: 2024年12月1日.
- ^ Bourneシェルの場合。環境変数の設定方法はシェルにしたがうので、Cシェルならば
setenv LANG LANGUAGE
のようになる。
関連項目
外部リンク
gettext
出典: フリー百科事典『ウィキペディア(Wikipedia)』 (2021/11/05 22:40 UTC 版)
プログラム中の文字列のローカライズ(地域化)を支援するツール。
※この「gettext」の解説は、「国際化と地域化」の解説の一部です。
「gettext」を含む「国際化と地域化」の記事については、「国際化と地域化」の概要を参照ください。
固有名詞の分類
オープンソース |
MetaPost EmuTOS Gettext CakePHP Free Pascal |
PHP |
ascii2ebcdic atan2 Gettext next CakePHP |
PHP |
ascii2ebcdic atan2 Gettext next CakePHP |
ライブラリ (プログラミング) |
Video for Windows SLATEC Gettext GObject Zlib |
- GetTextのページへのリンク