1. gettext を使用します。Smarty には対応する gettext プラグインがあるため、このプラグインを直接使用します。
1.1 次のコードをパブリック インクルード ファイルに追加します。
1.2 Smarty プラグインに必要な t タグを対応するテンプレートに追加します1.3 Smarty プラグインが提供するツールを使用して C ファイルを生成します |
この 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 で定義されたものと同じであることが最適です
tsmarty2c.php で定義された Smarty オープン タグとクローズ タグは、 Smarty 構成ファイルの設定と一致するようにしてください |
1.4 Linux システムで xgettext を呼び出し、1.3 の c ファイルから接尾辞 po を持つファイルを生成します
//指定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 でない場合エンコードされている場合は、上記のコマンドで指定する必要があります -- file-code=ファイル コード |
1.5 1.4 で生成された $package.po を編集し、対応する翻訳文字列を追加します
いくつかの言語があるため、編集していくつかの言語を生成するだけです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
- true
http://www.bkjia.com/PHPjc/446660.html
技術記事
1. gettext を使用します。Smarty には対応する gettext プラグインがあるため、このプラグインを直接使用します。 1.1 次のコードをパブリック インクルード ファイルに追加します。