Django 1.3/Google App Engine を使用してプログラムを作成しましたが、サポートの欠如と奇妙な動作を発見しました。
Prapration - ポーランド語の翻訳 (重要な場合があります)
まず第一に、ungettext はポーランド語を直接サポートしていませんが、django 1.3 は PO ファイルタグの Plural-Forms をサポートしています (英語ではない多くの言語には複数の複数形があります) - 私はポーランド語でそうしています - おそらくロシア語でも同じでしょう:
複数形: nplurals=3; multiple=(n==1 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);
ポーランド語には英語よりも複数形が多いため、 ungettext が役に立たない前に述べたように、いくつかの例を挙げました。これを使用して msgId を抽出しました。
# should be 0 kóz
ungettext(u'%s kóz', u'%s kozy', 0) % 0
# should be 1 koza
ungettext(u'%s kóz', u'%s kozy', 1) % 1
# should be 2 kozy
ungettext(u'%s kóz', u'%s kozy', 2) % 2
# should be 5 kóz
ungettext(u'%s kóz', u'%s kozy', 5) % 5
私はmakemessages.pyを使用し、これをトリックで翻訳して、英語のように2つではなく3つの複数形を取得しました(ポーランド語には2〜3つのフォームが必要です):
msgid "%s kóz"
msgid_plural "%s kozy"
msgstr[0] "%s 1 koza"
msgstr[1] "%s 2 kozy"
msgstr[2] "%s 5 kóz"
Django の奇妙な動作 (主要な質問)
今私がやっているが動作を理解していないより多くのトリック:
私はDJANGOのすべての変数を正しく設定しました(そう願っています)と:
LANGUAGE_CODE = 'pl' - すべての翻訳は機能しますが、ポーランド語の翻訳は機能しません 3 以外の 2 つの形式があります。 kozy" msgstr[2] "%s 5 kóz"
LANGUAGE_CODE = 'en' - すべての翻訳作品 (pl、en-us、en-gb、de-de、...)
LANGUAGE_CODE = 'xx' - すべての翻訳作品 (pl、en-us、en-gb、de-de、...)
LANGUAGE_CODE = 'en-us' - すべての翻訳 (pl、en-us、en-gb、de-de、...) は機能しますが、en-us の翻訳は機能しません
Djangoで動作させるために言語をINVALID 'xx'またはその他の既存の翻訳に設定する必要があるのはなぜですか? それを正しく行う方法を教えていただけますか?