CakePHP プログラムの例を見たプログラマーは、コントローラーまたはビューで、ほとんどの出力が関数 __("xxxx") を使用して実行されることがわかります。
この関数は、他のフレームワークの getText と同等です () 関数は、対応する言語コンテンツを動的に取得します。キーの値とロケールに基づいて。 8 1) i18N とは何か、L10N
はまず、ローカリゼーションとインターナショナル化という 2 つの単語を理解する必要があります。これらは、Web アプリケーションのローカライズ機能を示します。国際化とローカリゼーションは、多くの場合、i18n および l10n と省略されます。数字の 18 と 10 は、単語の最初の文字から最後の文字までの文字数です
2) ローカライズされた言語ファイルを実装します
ローカライズされたコンテンツが必要なものすべて コントローラーは、最初に CakePHP の L10n クラスを参照する必要があります。 AppController にインポートできるので、すべてのコントローラーで使用できます
view plaincopy
App::import('Core', 'l10n');
次に、ローカライズされたコンテンツを管理するための対応する言語ファイル (ファイル名default.po)。ファイルには一連の文字列とその ID が含まれているため、コンテンツの整理、管理、翻訳が容易になり、対応する言語フォルダーに保存されます。例:
view plaincopy
/app/locale/fre/LC_MESSAGES/default.po (French)
ファイルを作成したら、ローカライズされたコンテンツを編集できます。各文字列のキー値は一意であり、対応する値が含まれている必要があることに注意してください。以下は簡単な例で、
英語のdefault.poファイルの内容です:
view plaincopy
view plaincopy
view plaincopy
msgid "search" msgstr "点击搜索我们的产品列表。"
view plaincopy
< /pre> <p></p><div class="code" style="position:relative; padding:0px; margin:0px;"><div class="code" style="position:relative; padding:0px; margin:0px;"><pre class="brush:php;toolbar:false">
</p><p><pre class="brush:php;toolbar:false"> /pre> </p><p> (msgid は文字列を識別するために使用され、異なる言語ファイルで一貫している必要があり、msgstr は対応する言語のコンテンツです)</p><p>.po ファイルは UTF-8 でエンコードされ、各 msmstr 値は1014 文字に制限されます。 Macintosh コンピュータを使用している場合は、ファイルを編集するときに必ず Unix 改行 (LF) を使用してください。そうしないと、ファイルが正しく解析されません。無料のエディターである Poedit を使用すると、.po ファイルを簡単に編集できます。 </p><p>3) アプリケーションのローカルロケールを設定します (このステップは省略できます。cakephp はユーザーのブラウザ設定に従って対応する言語で表示されます) </p><p> 1. config/core.php で configure::write を使用します: </p><div class="code" style="position:relative; padding:0px; margin:0px;"><div class="code" style="position:relative; padding:0px; margin:0px;"><div class="code" style="position:relative; padding:0px; margin:0px;"><div class="code" style="position:relative; padding:0px; margin:0px;"><pre class="brush:php;toolbar:false"> view plaincopy
Configure::write('Config. language' , "chi");
ここで、chi は中国語を表し、英語は eng である必要があります。
2. PHP ファイルプログラムを開始する前に書き込みます (たとえば、beforeFilter でユーザーのロケールに従って対応する言語を設定します):
view plaincopy
$this->Session->write ("Config. language", "chi ");
3. 次のコードを使用して、
view plaincopy
App::import('Core', 'L10n');
$l10n = & new L10n();
$l10n- > ;get('chi'); //ロケールを中国語に設定します
//然后使用_()函数来实现本地化
_('msgid');
4)实现本地化
在需要实现本地化的地方,调用_()函数
1、直接输出字符串,没有返回值:
view plaincopy
__("msgid"); 或者 _("msgid", false);
2、间接输出字符串,有返回值:
view plaincopy
__("msgid",true);
3、还有input要加个label来使他出现中文。
view plaincopy
echo $form->input('name',array('label'=>__('msgid',true)));
5)没有覆盖的内容
日期、货币格式的国际化可以直接用php中的setlocale函数来实现。
以上就是Cakephp本地化和国际化详解 的内容,更多相关内容请关注PHP中文网(www.php.cn)!