2009-03-27 31 views
2

LAMPとSmartyテンプレートフレームワークを使用するWebアプリケーションを構築しています。ウェブサイトには静的コンテンツ(ページ、エラーアラート、確認メールなど)がたくさんあります。複数言語サポート(英語、フランス語、中国語など)でPHPアプリケーションを構築する方法

ウェブアプリケーションは複数の言語をサポートしている必要があります。次のアプローチは適切ですか?

1)Smartyテンプレートページ(htmlページ)のすべての静的コピーは、{lang file = 'about.xml' getTerm = 'title'}のようなsmartyプラグインの呼び出しに置き換えられ、titleタグの文字列を返します適切な言語で

2)about.xmlというファイルは、複数言語の辞書として機能するWebサーバー上のxmlドキュメントです。それはXMLノードを持つことになりますので、このような

<term value="title"> 
    <en>&lt;a href=&quot;http://stackoverflow.com&quot;&rt;Stackoverflow&lt;/a&rt; is a great site</en> 
    <fr>&lt;a href=&quot;http://stackoverflow.com&quot;&rt;Stackoverflow&lt;/a&rt; c'est website magnifique</fr> 
    <ch>&lt;a href=&quot;http://stackoverflow.com&quot;&rt;Stackoverflow&lt;/a&rt; complex looking chinese characters I don't udnerstand</ch> 
</term> 
<term value="signupmessage"> 
    <en>&lt;a href=&quot;http://stackoverflow.com&quot;&rt;Stackoverflow&lt;/a&rt; great deals!</en> 
    <fr>&lt;a href=&quot;http://stackoverflow.com&quot;&rt;Stackoverflow&lt;/a&rt; magnifique deals!</fr> 
    <ch>&lt;a href=&quot;http://stackoverflow.com&quot;&rt;Stackoverflow&lt;/a&rt; complex looking chinese characters I don't udnerstand</ch> 
</term> 

3)サイトのURL構造としてhttp://mywebsite.com/language/index.phpになります。これを行うには、 ln -s ./en ./のようなシンボリックリンクがhttp://mywebsite.com/en/index.phpと同じPHPページを指していますが、私は言語設定のURLをチェックします。私の希望は、Googleがサイトの両方のバージョンのインデックスを作成するということです。

これは良いアプローチですか? xmlはhtmlentityでエンコードされたhtmlタグを持っていても、異なる言語のコンテンツを格納するのに最適な形式ですか?私は何か見落としましたか?

答えて

3

質問の詳細についてはわかりませんが、Zend_Translateをご覧ください。

+0

+1 for Zend_Translate。それは私の意見ではジャンルの最先端のものです。 –

1

XMLはコンテナ形式であり、この使い方はそれほど悪くはありません。これは、HTMLエンティティを除いて比較的人間が読めるという利点があります。 CDATAセクションを使ってみることもできます。このためにXMLを使用するメリットの1つは、DTDを使用してすべての言語にすべてのキーに翻訳が存在することを検証できるということです。 UTF-8またはUTF-16を使用してファイルをエンコードしてください。ファイルの先頭にエンコーディングを置くと役立ちます。 UTF-8をお勧めします。

XMLデータをどのように読み込んでページに組み込むかについては、「スマート」はわかりませんが、全体的なアプローチは妥当と思われます。私が見ることができる唯一の欠点は、すべての翻訳を同時にリリースする必要があることです(この問題を避けるのは難しい)。

中国語の言語コードとしてchを使用しています。 You should use zh。これがISOコードです。 chはsomething else.

関連する問題