1

これが私の場合です。私はPoedit経由でgettextを使用してPHPアプリケーションを翻訳します。そして、私は複数形のカスタム関数を持っています:

function ListOutput($result,$column_names,$singular='.',$plural='.',$link=false,$group=array(),$options=array())

これはPoeditでこのキーワードで参照されています:ListOutput:3,4

さて、私の問題は、翻訳する文字列がある場合はを使用します_('example_string')が、後でそれを経由して翻訳すると、 example_stringListOutput($result,$column_names,'example_string', 'example_string_plural')のみがPoeditに表示されることです。

さらに、この問題が発生する場合もあれば、複数形と単数形(つまり、単数文字列が2回...)になる場合もあります。

注1:文字列がListOutput()でのみ参照されている場合、複数形はPoeditに正しく表示されます。

注2:ListOutput()関数は、リストの要素数を3番目の引数としてngettext()を呼び出します。

4

1 に答える 1

0

私はこのxgettext行動に驚かない。Gettext では、(翻訳されていない) 文字列が ID です。カタログに同じ ID を持つ 2 つの異なるエントリを含めることはできません。意味がありませんよね?

2 つの矛盾する定義を使用して ePO カタログxgettextに書き込みを求めています。単一形式のエントリ (出現から) または複数形のエントリ (呼び出しから) のいずれかです。エラーが報告された方が良いでしょうが、最初の定義を選択するだけでもまったく驚くことではありません。msgid "example_string"_()ListOutput()

とにかく怪しいようです -- 同じ文字列を両方の方法で正しく使用するにはどうすればよいでしょうか? ほとんどの場合、2 つの使用法のうちの 1 つが正しくありません。本当に正当な場合は、 を使用msgctxtして 2 つの文字列を明確にすることができます。

于 2013-03-13T12:18:43.597 に答える