ホームページ  >  記事  >  バックエンド開発  >  PHP Smarty は gettext_PHP チュートリアルを通じて国際化の概要を強化します

PHP Smarty は gettext_PHP チュートリアルを通じて国際化の概要を強化します

WBOY
WBOYオリジナル
2016-07-15 13:25:44897ブラウズ

1. gettext を使用します。Smarty には対応する gettext プラグインがあるため、このプラグインを直接使用します。

1.1 次のコードをパブリック インクルード ファイルに追加します。

1.2 Smarty プラグインに必要な t タグを対応するテンプレートに追加しますこの C ファイルは、すべてのテンプレート内のタグ付き文字列を抽出します
1.3 Smarty プラグインが提供するツールを使用して C ファイルを生成します

//$domain_info['lang']为cookie传进来的语言设定值$language_code = $domain_info['lang'];//界面语言设置成中文if($language_code == 'zh_CN'){//设置目标语言putenv("LANG=$language_code");setlocale(LC_ALL, $language_code);//$package为mo文件的名字$package = 'i18n_zh';//绑定mo文件的路径bindtextdomain($package, '/var/locale');//设置搜索的mo文件的文件名textdomain($package);

注: デフォルトの c ファイルの名前は、1.1 で定義されたものと同じであることが最適です1.4 Linux システムで xgettext を呼び出し、1.3 の c ファイルから接尾辞 po を持つファイルを生成します
tsmarty2c.php で定義された Smarty オープン タグとクローズ タグは、 Smarty 構成ファイルの設定と一致するようにしてください

//指定mo文件的返回到gettext的编码bind_textdomain_codeset($package, 'UTF-8');}elseif($language_code == 'BIG5'){//界面语言设置成繁体$language_code = 'zh_TW';putenv("LANG=$language_code");setlocale(LC_ALL, $language_code);$package = 'i18n_tw';bindtextdomain($package, '/var/locale');textdomain($package);bind_textdomain_codeset($package, 'UTF-8');}else{//界面语言是英文//设置目标语言putenv("LANG=$language_code");setlocale(LC_ALL, $language_code);//$package为mo文件的名字$package = 'i18n_en';//绑定mo文件的路径bindtextdomain($package, '/var/locale');//设置搜索的mo文件的文件名textdomain($package);//指定mo文件的返回到gettext的编码bind_textdomain_codeset($package, 'UTF-8');}//*********添加国际化语言的处理结束***************/

注: ファイルが Asc でない場合エンコードされている場合は、上記のコマンドで指定する必要があります1.5 1.4 で生成された $package.po を編集し、対応する翻訳文字列を追加します
-- file-code=ファイル コード
いくつかの言語があるため、編集していくつかの言語を生成するだけですpo ファイルを個別に作成します

1.6 Linux システムを呼び出すには、msgfmt が必要です 1.3 の 1.5 の po ファイルは、接尾辞 mo を持つバイナリ ファイルを生成します

php -q ./tsmarty2c.php  *.html  $package.c

1.7 ロケール ディレクトリを確立するには、 1.1 では、bindtextdomain($package, '/var/locale') と組み合わせる必要があります。設定は同じです。1.1 を例に挙げると、最初に /var/ (既存の) ディレクトリにロケール ディレクトリを作成します。ロケールは
xgettext -d $package    $package.c
msgfmt -o $package.mo $package.po
|-- en_US<br>|   `-- LC_MESSAGES<br>|<br>|-- $package.mo
|<br>|-- zh_CN<br>|   `-- LC_MESSAGES<br>|<br>|-- $package.mo

第 1 レベルのディレクトリは次のとおりです。1.1 の $ language_code の定義は次のようにする必要があります。そうしないと見つかりません。第 2 レベルのディレクトリ LC_MESSAGES は固定されており、そこに格納されます。 1.6で生成されたmoファイル2番目、ウェブサイトはSmatyを使用しているため、テンプレート内のすべてのテキストが抽出され、smartyのconfig_loadを通じて言語ファイルにロードされます。 $smarty->config_dir で設定されたディレクトリが php に含まれている限り、次のコード
|



http://www.bkjia.com/PHPjc/446660.html

www.bkjia.com
  1. tru​​e
http://www.bkjia.com/PHPjc/446660.html
技術記事

1. gettext を使用します。Smarty には対応する gettext プラグインがあるため、このプラグインを直接使用します。 1.1 次のコードをパブリック インクルード ファイルに追加します。
声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。