今日は、PHP での getText の使用法を説明するために簡単な例を使用します (getText は、プログラマーや翻訳者が多言語ソフトウェアを開発するのに役立つ一連のツールとライブラリ関数です)。これにより、PHP の i18n が実現されると仮定します。ホームページに戻るリンクを表示したい:
コードをコピー コードは次のとおりです:
//home.php :
$str = 'home';
print <<{$str} 🎜>
多言語開発の旅を始めましょう:
pot ファイルを作成します。pot は、Portable Object Template の略語で、対応する po は Machine Object の略語です。前者は元の文字列ファイルを指し、一般に翻訳者が変更するために使用されます。一方、後者はマシン関連であり、通常はプログラムによって読み取られます。 Pot ファイルは手動で作成することも、xgettext を通じてコードから文字列を抽出することによって生成することもできます。これは、xgettext を使用して生成されます。
コードは次のとおりです: # 説明的なタイトル
# Copyright (C. ) パッケージの著作権所有者# このファイルは、パッケージ パッケージと同じライセンスの下で配布されています。
# 最初の作成者
#、あいまい
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 -チーム: LANGUAGE
"MIME-Version: 1.0n"
"Content-Type: text/plain; charset=CHARSETn"
"Content-Transfer-Encoding : 8bitn"
#: home.php:2
msgid "home"
msgstr "
pot に従ってさまざまな言語で po ファイルを生成します。 ここで最初に生成します。簡体字中国語の po ファイル:
export LANG=zh_CN.gb2312
msginit -l zh_CN.gb2312 -i home.pot
コードは次のとおりです: # 中国語の翻訳for PACKAGE 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-Date: 2009-07-23 20:56 0800n"
"PO-Revision-Date: 2009-07-23 21:00 0800n"
"Last-Translator:フルネーム < ;電子メール@アドレス>n"
"言語チーム: 中国語"
"MIME バージョン: 1.0n"
"コンテンツ タイプ: text/plain; "Content- Transfer-Encoding: 8bitn"
#: test.php:2
msgid "home"
msgstr "
zh_CN.po 内の対応する文字列を中国語に翻訳します:
コードをコピー
# PACKAGE パッケージの中国語翻訳 # の簡体字中国語翻訳PACKAGE パッケージ。# Copyright (C) 2009 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: 2009-07-23 21:00 0800n"
"Last-Translator:
"言語 - チーム: 中国語"
"MIME-バージョン: 1.0n"
"Content-Type: text/plain; charset=GB2312n"
"Content-Transfer-Encoding: 8bitn"
#: test .php:2
msgid "home"
msgstr "ホームページ
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");
// ./locale/zh_CN/LC_MESSAGES/home.mo で翻訳を探しています
$str = gettext('home') //_('home') を使用することもできます')
print <<{$str}
実行このスクリプトが正しい中国語を出力するかどうか見てみましょう。
プログラムを変更する必要はなく、中国語のような mo ファイルを生成してシステムの対応するディレクトリにインストールするだけです。 。 それでおしまい。異なる言語間の切り替えには、現在のロケールを変更するだけで済みます。