I18n(国際化)は非常に奇妙なことです。コードを多言語化するためには、多くの変更を加えなければなりません。
私にとって、最良の解決策は、すでに多くの層でI18nをサポートしているCakePHP上でそれを動かすことです。しかし、このソリューションは、あなたが多くの時間を費やすようになります。 ES:だから....
echo "Hello World"
または
<p>Hello World</p>
のような内部のテキストを翻訳するための高速な方法は、すなわち(各言語用のPHP拡張子を持つ適切な言語ファイルを作成することです。 php、el.php、en.phpなど)、次のようなキーと値を持つ配列が含まれます。
$l = array(
'WEB_TITLE' => 'My web site title',
'GEN_HELLO' => 'Hello World',
'MENU_HOME' => 'Home',
'MENU_PRODUCTS' => 'Products',
...
);
echo $l['GEN_HELLO'];
と
<p><?php echo $l['GEN_HELLO']; ?></p>
がある:
は、その後、あなたのウェブサイトに、あなたはそのような何かを持っている各ページの先頭にし、あなたのページに適切な言語ファイルをロードする必要がありますアプリケーションのフロントエンド側。データを多言語化するには、データベース構造をいくつか変更する必要があります。
はあなたがタイトルとコンテンツ国際化を両立させるために持っているような構造では、そのテーブルに
ARTICLES
id Title Content Date Active
を考えてみましょう。列はあなたが上記の表にはその
ARTICLES_L
ID POST_ID COLUMN LANGUAGE CONTENT
のように見えますが、あなたは記事IDを保存する必要があります例ARTICLES_Lに呼ばれる別のテーブルを作成するために持っていることを翻訳するためには、翻訳が属している列(例:タイトル)言語、および翻訳されたコンテンツ。
だから、記事内のレコードが
ARTICLES
id Title Content Date Active
1 Title 1 This is content 1 2011-10-01 13:28:45 1
2 Title 2 This is content 2 2011-10-01 13:28:45 1
3 Title 3 This is content 3 2011-10-01 13:28:45 1
テーブルARTICLES_Lは、実際には、レコード
ARTICLES_L
ID POST_ID COLUMN LANGUAGE CONTENT
1 1 title es_ES Título 1
2 1 content es_ES Este es el contenido 1
3 1 title el_GR Τίτλος 1
4 1 content el_GR Αυτό είναι το περιεχόμενο 1
5 2 title es_ES Título 2
6 2 content es_ES Este es el contenido 1
....
は、あなたがしなければならない多くの多くの他のタスクがあることが含まれることを持っているが、これはある場合私があなたに与えている解決策の背後にあるアイデア:
いいえ幸運
PN:あなたのアプリケーションのフロントエンドでさえ、それを使用することです。http://php.net/manual/en/book.gettext.php この方法はWordPressとCakePHPで使われている方法ですが、非常に低いレベルです:?見てみましょう。これは、各言語のファイルを作成するよりも優れています。
これは役に立ちましたか? –
本当にありがとうございます! – Ivan
あなたは歓迎です:) –