4

多言語PHPアプリケーションの場合、ラベル/フレーズが複数の言語に翻訳されることを前提としています。これらのラベルは、言語固有のファイル(たとえば、言語ごとに1つのファイル)に配置することも、データベースにロードして、アプリが必要なときにそれらにアクセスできるようにすることもできます。

問題は、パフォーマンスの観点から、より良いアプローチは何ですか?

私には、ラベルがデータベースにある場合、ロードするデータが少なくなり(1ページに必要なラベルのみを要求できます)、翻訳用の管理ツールをより簡単に構築できるように見えます。ただし、そこにある多くのアプリやフレームワークは、その目的のためにフラットファイルを使用しているようです(たとえば、phpMyAdmin、CakePHPなど)。

4

2 に答える 2

5

ファイルからのデータのロードは、データベースからのロードよりもはるかに高速ですデータとアプリケーションの間の抽象化レイヤーを何層も削るだけです。アプリケーションのパフォーマンスをプロファイリングすると、データベースアクセスは通常最も遅い操作の1つであることがわかります。

何かを表示するたびにすべてのローカリゼーション文字列をロードしたくない場合は、それらを別のファイルに配置するオプションが常にあります。たとえば、文字列の「グローバル」ファイルがどこにでも表示され、ページ/セクションに固有のローカリゼーションファイルが表示されます。

とは言うものの、パフォーマンスに関することと同じように、私の言葉を信じないで、自分でそれを測定してください。たぶん、あなたの特定のコンテキストでは、あなたの特定のアプリケーションで、データベースはうまくいくでしょう。

于 2011-04-09T21:01:44.290 に答える
2

データベースでは、興味のあるレコードのみを選択できます...
しかし:

  • 翻訳を変更するたびに、データベースにデータを挿入/更新する必要があります。フラットファイルを使用する場合よりも困難です。
  • 完全に翻訳されたページを作成するには、多くの選択が必要になります。これは、パフォーマンスにはあまり適していません(つまり、キャッシュメカニズムを導入する必要があります)。


好奇心から、他の何か、つまり翻訳を目標とする何かを見てみませんか?

ここでは、広く使用されているGettextについて考えています。PHP用のGettext拡張機能があります(たとえば、Zend Frameworkには他のクラスもあります)

于 2011-04-09T20:52:56.740 に答える