0

動的変数を国際化したい。

次のコードがあります。

_e($widget['description'], MyStaticClass::$i18n_prefix);

poedit を実行すると、この国際化 ( $widget['description']) は行われません。

どうすれば動的にできますか?

ありがとう

4

1 に答える 1

3

とは PHP のネイティブ関数_e()などのラッパーであると想定しています (間違っている場合は修正してください)。ファイルをスキャンして .po または .pot ファイルにインポートする場合、変数は PHP によって解釈されないため、代わりに変数の宣言でそれを行う必要があります。このような:__()gettext()

$widget['description'] = _e("your text here", MyStaticClass::$i18n_prefix);

そして、あなたは好きなように使うことができます$widget['description']。それを別の文字列の一部として含めたい場合は、次を使用できますsprintf

$var = sprintf(
    _e("Write %s please", MyStaticClass::$i18n_prefix),
    $widget['description']
);

エコー$varすると、 が生成されWrite your text here pleaseます。翻訳者は、翻訳対象の 2 つの文字列your text hereWrite %s please. %sまた、定義された接頭辞を使用してコメントを含め、その部分が明確でない場合に翻訳者に知らせる必要があります。コメントは、関数の上の前の行にある必要があることに注意してください_e()

于 2013-09-11T20:56:51.883 に答える