2

LAMP と Smarty テンプレート フレームワークを使用する Web アプリケーションを構築しています。Web サイトには、静的なコンテンツ (About us ページ、エラー アラート、確認メールなど) がたくさんあります。

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

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

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。これを行うために、私の Web サーバーには のようなシンボリック リンクがあり 、 と同じ php ページln -s ./en ./ を指しますが、言語設定の URL を確認します。私の希望は、Google がサイトの両方のバージョンをインデックスに登録することです。http://mywebsite.com/en/index.phphttp://mywebsite.com/fr/index.php

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

4

2 に答える 2

3

質問の詳細についてはわかりませんが、 をご覧になることをお勧めしますZend_Translate

于 2009-03-27T20:06:53.233 に答える
1

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

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

私が注意することの 1 つは、中国語の言語コードとして ch を使用していることです。 zh を使用する必要があります。それがISOコードです。ch は別のものです。

于 2009-03-27T20:06:12.423 に答える