2012-10-04 9 views

答えて

12

詳細できる。

$lang = array(
    "welcome" => "Welcome", 
    "bye" => "Bye" 
); 

を他の言語については、小さなユースケースについては

$lang = array(
    "welcome" => "Accueil", 
    "bye" => "Au revoir" 
); 

、これは細かいことはないと.poファイルと一緒に行くために必要する必要がありますのようなものを持っているだけで、lang_fr.php言います。また、次のように定義することもできます。

function _($l) 
{ 
    return $lang[$l]; 
} 
+6

+1シンプルなサイトのための良い解決策 – Tchoupi

+6

解決策は良いですが、私はまだgettextルートに行くことをお勧めします。あなたはあなたのサイトがどこに行くのか分からない。それはもっと速くなり、言語を追加する必要があるかもしれません。 Gettextは、この提案された解決策よりも実装に時間がかかりません – eakkas

+0

このように@NatlsGleekがこのように変換ファイルを他人に送ることができます。 –

1

決して変わらない静的コンテンツの場合は、必ずご確認ください。

動的コンテンツの場合は、ごくわずかです。 .poファイルなどをコンパイルするのは一番上です。代わりに、キャッシュされたコンパイル済みのテンプレートを使用して、JSONまたはXMLのソリューションとテンプレートを使用することをお勧めします。

+2

です。拡張子は「.poファイルをコンパイルする」トップ "に? – dsas

+0

私にとって静的なコンテンツの場合は非常に多いです。 –

3

性能面、gettextExtensionは、ローカライズされたテキストに文字列のidのようにマップする文字列、配列を使用するよりも高速です(たとえば"WelcomeText" => "Welcome to our homepage."のために何か<?= $strings["WelcomeText"] >を使用して含まれることになる。gettextのの純粋なPHPの実装が遅くなります場合はお勧めではありませんあなたは自分のアプリケーションでそれをlang_XX.phpを使用して含めることができます。PHP拡張を使用し、ここでLocalizing PHP web sites using gettextBenchmarking PHP Localization – Is gettext fast enough?

10

gettextが最適です。文字列の少ない小規模なサイトでは、大きく成長することは予想されませんが、すでに公開されているソリューションに似たものを実装すると、実際にgettextを使用して構成する方法を学ぶよりも早くなる可能性があります。

TL; DR:

人々は、あなたがそのホイールを再発明する年齢を過ごすことができ、作品の翻訳システムを作成するために、長年にわたりハード考えている、またはあなたがgettextを使用する方法を学びながら少しを過ごすことができ。

オープンソースの世界では、gettextは事実上のデファクトスタンダードです。ここで

gettextのは、それがかつてのスレッド ごとにメモリにすべての単一の文字列をロードする必要はありません

  • 高速です翻訳アレイ

    1. の大きなリストを維持するための通常の代替よりも優れている理由はいくつかの理由があります
    2. poeditのような翻訳者のための多くのツールサポートがあるので、翻訳者がPHPコードの編集方法を理解している必要はありません。
    3. それはあなたがまだ翻訳者へのコメントを与える必要が働いて、新しい翻訳可能なテキストを追加し、簡単に
    4. 戻って一緒にそれらをマージしながら、翻訳するためにあなたのファイルをオフに送信することができます意味、など、あなたのためのツールをサポートしていmsgmergeし、文字列のコンテキストについてgettextは、使用されているコードからコメントをとり、翻訳ファイルにコピーします。
    5. 翻訳キーは英語テキストです。まだ翻訳されていない場合、テキストはそのまま英語で表示されます。この答えに与えられた解決策は、この権利を得ています。
    6. 文字列が整数に依存する場合は複数形をサポートし、英語の場合は2つの書式if n != 1 "There was a person" else "There were n people"があります。他の言語の場合、ルールは(n!= 1)と同じくらい単純ではなく、ロシア語は3種類あり、ルールはn%100/10==1 ? 2 : n%10==1 ? 0 : (n+9)%10>3 ? 2 : 1;
  • +0

    大規模な翻訳については、これが最良の選択だと思いますが、私の場合は過剰です。 –

    +1

    あなたはまだ今日(2015年2月)現在のあなたの推薦に立っていますか? 2012年以来他に何かが登場しましたか? – alexw

    +0

    symfonyの翻訳コンポーネントはよく考えられていますが、私はそれを一度も使用していません。 – dsas

    関連する問題