ウェブサイトを構築していますが、7 か国語に対応する必要がありますか? 多言語 php スクリプトを取得するために適用できる良い方法があるかどうか疑問に思っていましたか?
- 私にとっては簡単
- 翻訳者にとって簡単
また、DB、XML、またはPHPファイルに保存する必要がありますか?
ウェブサイトを構築していますが、7 か国語に対応する必要がありますか? 多言語 php スクリプトを取得するために適用できる良い方法があるかどうか疑問に思っていましたか?
また、DB、XML、またはPHPファイルに保存する必要がありますか?
翻訳を保存するためのオプションはたくさんあります。
複数のアダプターをサポートし、アプリケーションに翻訳を埋め込むための基本的なアプローチを提供するZend_Translateのようなものを使用することをお勧めします。
daddz とは反対に、PHP で gettext を使用しないことをお勧めします。
ロケール設定はプロセスごとです。これは、マルチスレッド Apache または PHP をインプロセスで実行しているその他のマルチスレッド Web サーバーで作業している場合、1 つのスレッドで setlocale を呼び出すと、他のスレッドに影響を与えることを意味します。
どのスレッド/プロセスがどのリクエストを処理しているかを知ることができないため、ユーザーが断続的に間違ったロケールを取得するというひどい問題に遭遇します。
printf
や などの関数にも影響を与えstrtotime
ます。gettext/setlocale を使用している場合、バックエンド コードに到着する「奇妙な」数値形式に確実に影響を受けます。Eran が提供する他のソリューションを使用するか、自分で何かをすばやく実行します (PHP 配列は非常にうまく機能します)。また、コア PHP 5.3 に含まれる intl-extension を使用して、数値と日付のフォーマットと照合を行います。
Web ベースのソリューションで gettext を何度も使用することは、ことわざにあるワームの缶を開けるようなものであることが判明しました。
Gettextをお勧めします。
これはクロスプラットフォームでオープンソースであり、広く使用されており、php で利用できます: PHP Gettext
多言語CMSを構築しました。すべてのコンテンツは、共通 (言語固有の値ではない) のメイン テーブルと、言語固有のコンテンツ用の個別のテーブルを含むデータベースに格納されました。
たとえば、製品の保存を想像してみましょう。'products' テーブル (unique_id、作成日、画像の URL などを含む) と 'product_local' テーブル (言語固有のフィールドを含む) があります。
この方法を使用すると、コンテンツの保守が非常に簡単になります。
私は経験がないgettext
ので、そのトピックについてはコメントしませんが、次の方法を使用していくつかの多言語サイトを構築しました。
方法 1
私のフォーマットが最高だとは言いませんが、それが効果的であるというだけです。配列も使用しました。コンテンツの保存場所によって異なります。
たとえば、どのテキストかを識別するインデックスを使用して、テキストの連想配列を作成します。
$text['english']['welcome'] = "Welcome to my site. blah blah blah";
$text['english']['login'] = "Please enter your username and password to login";
また、定数または構成変数を使用して言語を設定することもできます。
方法 2
同一の構造とバックエンドを持つ 2 つのサイトを構築しましたが、それぞれが異なるデータベースを使用し、別々に管理されていました: data_french
、data_english
.
このフォーラムをチェックしてください。翻訳を手伝ってくれる人がいる場合は、おそらく別のアプローチが必要になると思います。
このトピックに関するこの記事は、興味深い読み物になるかもしれません。
http://cubicspot.blogspot.com/2011/12/cross-platform-multilingual-support-in.html
著者は「怠惰なプログラマー」戦略を提唱しており、多言語のものが必要な場合にのみ実行してください。また、IANA 言語コードを使用した PHP 配列アプローチを推奨しているようです。文章が曖昧ですが。