Cakephpのローカライズと国際化について詳しく解説

黄舟
リリース: 2023-03-03 16:14:02
オリジナル
1168 人が閲覧しました

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 plaincopy
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー

msgid "purchase" msgstr "名前を選択してボールを購入してください。"

view plaincopy
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー

msgid "search" msgstr "ここをクリックしてください。 "

中国語のdefault.poファイルの内容に対応します:

 view plaincopy
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー

msgid "purchase" msgstr "名前を選択してボールを購入してください。"

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)! 


関連ラベル:
ソース:php.cn
前の記事:PHPをベースにしたユーザー登録・ログイン機能の実装 次の記事:Cakephp は別のデータベースのデータテーブルを呼び出します
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
最新の問題
関連トピック
詳細>
人気のおすすめ
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート