今日は、PHP での getText の使用法を説明するために簡単な例を使用します (getText は、プログラマーや翻訳者が多言語ソフトウェアを開発するのに役立つ一連のツールとライブラリ関数です)。これにより、PHP の i18n を実現したいとします。ホームページに戻るリンク:
コードをコピー コードは次のとおりです:
//home.php:
$str = 'home'
print <<< a href="#">{$str}
HTML;
多言語開発の旅を始めましょう:
Pot ファイルを作成します。 po 一つは mo で、Machine Object の略です。前者は元の文字列ファイルを指し、一般に翻訳者が変更するために使用されます。一方、後者はマシン関連であり、通常はプログラムによって読み取られます。 Pot ファイルは手動で作成することも、xgettext を通じてコードから文字列を抽出することによって生成することもできます。これは xgettext を使用して生成されます:
xgettext -a home.php -o home.pot
このコマンドを実行すると、home.pot という名前のファイルが現在のディレクトリに生成されたことがわかります。ファイルを開くと、次の場所に移動することがわかります。
コードをコピーします コードは次のとおりです:
# 説明的なタイトル
# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
# このファイルは、PACKAGE パッケージと同じライセンスの下で配布されています。 # 最初の著者 、年
#
#、あいまい
msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSIONn"
"Report-Msgid-Bugs-To: n"
「POT -Creation-Date: 2009-07-23 20:56+0800n」
「PO-Revision-Date: YEAR-MO-DA HO:MI+ZONEn」
「最終翻訳者: FULL NAME "言語チーム: LANGUAGE n"
"MIME バージョン: 1.0n"
"Content-Type: text/plain=CHARSETn"
"コンテンツ転送エンコーディング: 8bitn "
#: home.php:2
msgid "home"
msgstr "
pot に従ってさまざまな言語で po ファイルを生成します。 ここでは、まず簡体字中国語の po ファイルを生成します:
export LANG=zh_CN。 gb2312
msginit - l zh_CN.gb2312 -i home.pot
このコマンドを実行すると、現在のディレクトリに zh_CN.po という名前のファイルが生成されたことがわかりました。 ファイルを開くと、次の内容が表示されます。
コードをコピーします。 コードは次のとおりです: # PACKAGE パッケージの中国語翻訳
# PACKAGE パッケージの簡体字中国語翻訳
# Copyright (C) 2009 THE PACKAGE'S COPYRIGHT HOLDER
# このファイルは PACKAGE パッケージと同じライセンスの下で配布されます。 # < ;huixinchen@localhost.localdomain>、2009。
#
msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSIONn"
"Report-Msgid-Bugs-To: n"
"POT-Creation -日付: 2009-07-23 20:56+0800n"
"PO-Revision-Date: 2009-07-23 21:00+0800n"
"最終翻訳者: フルネーム n"
"Language -Team: Chinese"
"MIME-Version: 1.0n"
"Content-Type: text/plain; charset=GB2312n"
"Content-Transfer-Encoding: 8bitn"
#: test.php:2
msgid "home "
msgstr "
zh_CN.po の対応する文字列を中国語に翻訳します:
コードをコピーします
コードは次のとおりです: # PACKAGE パッケージの中国語翻訳 # の簡体字中国語翻訳PACKAGE パッケージ。
# Copyright (C) 2009 THE PACKAGE'S COPYRIGHT HOLDER
# このファイルは、PACKAGE パッケージと同じライセンスの下で配布されます
# , 2009。
#
msgid ""
msgstr ""
" Project-Id-Version: PACKAGE VERSIONn"
"Report-Msgid-Bugs-To: n"
"POT-Creation-Date: 2009-07-23 20:56+0800n"
"PO-Revision -日付: 2009- 07-23 21:00+0800n"
"最終翻訳者: n"
"Language-Team: Chinese"
"MIME-Version: 1.0n"
"Content -Type: text/ plain; charset=GB2312n"
"Content-Transfer-Encoding: 8bitn"
#: test.php:2
msgid "home"
msgstr "Homepage
po ファイルに基づいて mo ファイルを生成します。
msgfmt zh_CN.po -o zh_CN.mo
このコマンドを実行すると、zh_CN.mo という名前のファイルが現在のディレクトリに生成されたことがわかりました。これはバイナリなので、テキスト エディタでは開くことができません。
mo ファイルを特定のディレクトリにインストールします:
cp -f zh_CN.mo .local/LC_MESSAGES/home.mo
プログラムを変更します。
コードをコピーします
コードは次のとおりです:
setlocale(LC_ALL, 'zh_CN');
// 変換テーブルの場所を指定します
bindtextdomain("home", ".");
// ドメインを選択します
textdomain("home"); for in ./locale/zh_CN/LC_MESSAGES/home.mo
$str = gettext('home') //_('home') も使用できます
print <<
{$str} HTML;
このスクリプトを実行して、正しい中国語が出力されるかどうかを確認してください
プログラムを変更せずに他の言語を追加することも簡単です。中国語の場合と同様に、mo ファイルを生成し、システム内の対応するディレクトリにインストールします。異なる言語間の切り替えには、現在のロケールを変更するだけで済みます。
http://www.bkjia.com/PHPjc/323229.htmlwww.bkjia.comtruehttp://www.bkjia.com/PHPjc/323229.html技術記事今日は、簡単な例を使用して、PHP での getText の使用法を説明します (getText は、プログラマーや翻訳者が多言語ソフトウェアを開発するのに役立つ一連のツールとライブラリ関数です)。