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