1

Zend Framework、MVC、エンタープライズ Web サイト プロジェクトに取り組んでいます。文脈に応じて各単語を翻訳できるフレンドリーな翻訳システムを開発したいと考えています (同じ単語が異なる翻訳を持っている場合もあります)。

Zend Framework は、i18n とローカリゼーションに Zend_Translate を使用します。また、ユーザーがページを直接翻訳できる Magento (ZF を使用) のインライン翻訳システムも確認しました。

このインライン翻訳システムがどのように機能するかを知りたいので、同様のシステムを改善して構築できます。

  1. 翻訳はどこに保存されますか: データベースまたは CSV ファイル?

  2. ユーザーが別のページで別の方法で翻訳した場合、システムはどのようにして同じ単語の翻訳を取得することを知るのでしょうか?

  3. インライン翻訳をサポートするには、ページをどのように構築すればよいですか?

  4. システムは静的テキストと動的 (データベース駆動型) テキストをどのように処理しますか?

  5. インライン翻訳を行うと、サイトが非常に遅くなるようです。Magento はこの問題をどのように解決しますか?

他に説明すべき点がありましたら、ご記入ください。ありがとう

4

1 に答える 1

3

ここで最初から始めます (将来的には、これはおそらく複数の論理的な質問になります):

  1. Magento は基本的な翻訳 (プログラマーによって提供される) を CSV ファイルに保存しますが、インライン翻訳はデータベースに保存されます。

  2. Magento の翻訳は、単語ではなく文字列全体を操作します。文全体に相当する文脈を翻訳に提供することで、慣用的な翻訳が可能になります。トレードオフは、すべての単語ではなく、すべての文を翻訳する必要があることです。

  3. これに対する Magento の答えは、ローカライザーへの呼び出しですべてのローカライズ可能な文字列をラップすることです。Magento テンプレートは通常、次のようになります (二重アンダースコア機能は、「現在のロケールに変換する」機能にマップされます)。

    print $this->__("Please translate this string");

  4. Magento の動的テキスト (製品説明など) は翻訳されないことがよくありますが、翻訳したい場合は、次のように正しい文字列を翻訳者に渡すだけです。

    print $this->__($someString);

  5. 翻訳によってサイトが成功したり壊れたりすることはほとんどありません (ほとんどのパフォーマンスの問題については、DB クエリに注目してください) が、それでもなお、これは正当な質問です。Magento は、いくつかのことを支援します。まず、シリアル化されたバージョンの CSV ファイルをキャッシュに保存するため、CSV の読み取りがより効率的になります。次に、Magento は、ページ全体の出力を保存できるようにページ キャッシュを提供し (同じようにレンダリングされると仮定)、ページの小さな部分のブロック レベルのキャッシュも提供します。これらの間では、ほとんどの場合、体調が良好です。

それが役立つことを願っています!

ありがとう、ジョー

于 2010-07-19T16:20:52.233 に答える