2

ライブラリを使用して、Google Cloud AppEnginephp-gettextの不足している拡張機能を回避しています。gettext単数形と複数形が英語では同じですが、他の言語では異なる場合。

ngettext("%d correct", "%d correct", $n)

スペイン語の翻訳は

"%d correcto" (singular)
"%d correctos" (plural)

与えられた正解の数を示します。

しかし、単数形msgidは複数形とまったく同じであるため、これはエラーになりますmsgid。翻訳にコンテキストを追加できる関数dngettext()でさえ、うまくいきません:

dngettext("Number of correct answers", "%d correct", "%d correct", $n)

gettextライブラリで警告とエラーが発生します。

PHP Notice:  Undefined offset: -1
PHP Parse error: syntax error, unexpected '!=' (T_IS_NOT_EQUAL)
PHP Notice:  Undefined variable: number
PHP Warning:  Missing argument 4 for gettext_reader::npgettext()

私は英語の文章をmsgids として使用していますが、プロジェクト全体を変更して、代わりに暗号化された ID を使用することはできません。

ngettext("%d-correct-singular", "%d-correct-plural", $n) 

元の言語で同一の単数形と複数形を処理する適切な方法は何ですか?

4

1 に答える 1

0

実際には gettext ライブラリの既知のバグであることがわかりました: https://bugs.launchpad.net/php-gettext/+bug/1415873?comments=all

ngettext 関数を正しく使用するには、このバグを手動で修正する必要があります。

この問題は、一般的な gettext 拡張機能とは関係ありません。

于 2016-12-17T15:22:29.773 に答える