2012-10-19 29 views
9

私は英語で自分のphp gettextデフォルトの言語を持っているを確認しますのは、は、複数の言語での翻訳

を言わせて、私は2つの他の言語でいくつかの単語を翻訳し、配列にそれらすべてを置くために、私のコントローラの一つにしたいと思います。

理想的に私は

$word_sv = gettext($word, 'sv_SV'); 
$word_fi = gettext($word, 'fi_FI'); 

を行うことができますが、それは存在しません。

毎回gettext settings全体を変更する唯一の方法はありますか?

関連
function setLang($lang){ 
    putenv("LC_ALL=$lang"); 
    setlocale(LC_ALL, $lang); 
    bindtextdomain("myPHPApp", "./locale"); 
    textdomain("myPHPApp"); 
} 

setLang('sv_SV'); 
$word_sv = gettext($word); 
setLang('fi_FI'); 
$word_fi = gettext($word); 

は:後にGoogleでそれを見た:i18n with gettext but without the locale hassle?


編集

をここで提案答えたソリューションです:

+0

「サイト:stackoverflow.com php translate」のようなクエリ文字列を使用して、Googleの優れた検索機能を使用して特定のサイトを検索することができます。 'php translate 'のためだけにSOを検索します。 – Josh

+0

http://www.php.net/manual/en/function.dcgettext.phpを見たことがありますか?何か助けになるかもしれない。 – hakre

+1

Gettextは、このような使用例のために設計されていません。この考え方は、言語を一度設定し、gettext関数を呼び出すことによってすべてのメッセージを翻訳するというものです。ここのユースケースは何ですか? –

答えて

1

私はgettextを使用することの苦労を知っていますが、そのパフォーマンスは私にそれを保つものです!

あなたの場合、この小さなプロジェクトを見たいかもしれませんか?私はこれがあなたを助けるかもしれないと確信しています!

これは単に翻訳と.iniファイルを使用するため、ファイルを自由に切り替えて同じ単語の異なる言語をエコーすることができます。

https://github.com/Philipp15b/php-i18n

+1

thxは(あまりにも悪いPHPはネイティブにそれを行うことはできません) –

+0

私は自分の翻訳システムを書く寸前ですが、私が書いたものはどれもgettextの速さと比較できません。私のフェイスブックゲームは何千もの同時視聴に対応しているので、あなたのケースに応じて、パフォーマンスは私にとって非常に重要です。私が投稿したプロジェクトは役に立つかもしれません:) 幸運と幸運ギブソンをck! ;) –

0

私は明白な答えはあなた自身のグローバル関数をロールバックすることです推測:

function getLocalText($string, $lang) 
{ 
    putenv("LC_ALL=$lang"); 
    setlocale(LC_ALL, $lang); 
    bindtextdomain("myPHPApp", "./locale"); 
    textdomain("myPHPApp"); 

    return gettext($string); 
} 

$word_fi = getLocalText($word, 'fi_FI'); 
+2

と思います。gettextに別のオプションがありますか? –

+1

答えが本当に役に立たない私 –

1

ますが、ここでのgettextするためにバインドされている場合は、コンピュータがあなたのために仕事をしてみましょう。

あなたは、すべての言語に対してチェックしたい単語のリストを持っているか、最初に各言語の単語リストを作成します。これは、各単語と言語の間でsetlanguage関数を呼び出すためにいくらかのオーバーヘッドを省きます。

あなたは、各言語、各単語を行く機能をそのように書きたい場合は:

function gettext_by_lang($lang, $word) { 
    putenv("LC_ALL=$lang"); 
    setlocale(LC_ALL, $lang); 
    bindtextdomain("myPHPApp", "./locale"); 
    textdomain("myPHPApp"); 
    return gettext($word); 
} 

$word_sv = gettext_by_lang('sv_SV', $word); 
$word_fi = gettext_by_lang('fi_FI', $word); 

これは、少なくともあなたのコードがよりコンパクトになるだろう。もう一つの考え方は、データをチェックできるようにPOファイルとMOファイルにパーサーを使用することです。PHPで

ことの一つは、Wordpressの/ Glotpressで出荷されます。

多分これが役立ちます。そのライブラリは維持されています。

関連する問題