複数形の翻訳に関する GNU Gettext マニュアルを読み、その例を確認しました。
#, c-format
msgid "One file removed"
msgid_plural "%d files removed"
msgstr[0] "%d slika je uklonjena"
msgstr[1] "%d datoteke uklonjenih"
msgstr[2] "%d slika uklonjenih"
msgid_plural が msgid と異なるのはなぜですか? それは翻訳に複数形を認識させるという目的を無効にしないのですか?
私はこのようなことができると思います(英語の場合):
#, c-format
msgid "X geese"
msgstr[0] "%d goose"
msgstr[1] "%d geese"
#, c-format
msgid "sentence_about_geese_at_the_lake"
msgstr[0] "There is one goose at the lake."
msgstr[1] "There are %d geese at the lake."
(1 つの msgid のみを使用)。
次に、私のコードでは、次のようになります。
<?php echo $this->translate('X geese', $numberA); ?>
<?php echo $this->translate('sentence_about_geese_at_the_lake', $numberB); ?>
$numberA が 3 の場合、「3 ガチョウ」となります。
$numberB が 0 の場合、次の行は「湖には 0 羽のガチョウがいます」と表示されます。
(英語の場合、ルールは(n != 1)であるため、0 または 1 より大きい数値には複数形が使用されます)。
同じフレーズのコレクションに対して 2 つの msgid を指定する必要があるのは冗長に思えます。
ご協力いただきありがとうございます!