2011-07-12 5 views
0

私は、未知の(ただしかなり大きい)英語の文字列を印刷する約40ページの既存のデータベース駆動型PHPアプリケーションを使用しています。文字列は現在すべてハードコードされています。静的なドキュメントページもあります。このアプリケーションに言語サポートを追加する必要があります。既存のPHPアプリケーションをローカライズ

gettextはこの問題の標準的な解決策であると思われますが、gettextは私にとって「ハック」に非常によく似ています。私は、それが引き起こす付加的なオーバーヘッド(開発と実行時の両方)についても確信していません。私の要件により適した他のソリューションやフレームワークはありますか?このプロジェクトを開始する際に気をつけなければならないベストプラクティスや落とし穴はありますか?

答えて

2

gettextは多言語テキストストレージの「標準」ですが、結局のところ、それは単なるストレージエンジンです。それはあなたのページに適切なテキストを置くことを何もしません。適切なテキストを挿入できるように、ビューからテキストを抽象化する必要があります。

最後に、ドキュメントに言語テキストを配置する方法が必要です。これは、テキストを特定の方法で「タグ付け」して、検索して所望の言語テキストに置き換えることを意味する。私が管理している電子商取引サイト(3言語)では、FacebookのFBMLタグ付けシステムから派生した技術を使用しました。

「タグ」<trans id="slt">something like this</trans>にテキストをラップすることができます。その後、PHPのDOMツールを使用してIDを抽出し、IDに基づいて翻訳されたテキストを検索し、タグ間のコンテンツを適切な言語テキストに置き換えます。あなたのストレージ機構やデータベースにはまだgettextを使用できます。ブラウザはタグを無視しますので、開発中にページが正常に表示されます。

これはタグ付けの例の1つです。任意のタグ付けメカニズムを使用して、代わりにgrepを使用して抽出、検索、置換することができます。

静的ページでは、翻訳されたバージョンを事前に生成し、適切な言語バージョンを読み込むことができます。このように、言語ごとに余分なオーバーヘッドはありません。

+0

私たちは最終的にgettextを使ってしまいました。私の予想以上に苦痛は少なかった。 – pehrs

関連する問題