我使用 Django 1.3/Google App Engine 编写程序,发现缺乏支持和奇怪的行为。
Prapration - 波兰语翻译(可能很重要)
首先,ungettext 不支持波兰语直接看到,但 django 1.3 支持 PO 文件标签 Plural-Forms(许多非英语语言有多个复数形式) - 我为波兰语这样做 - 也许同样适用于俄语:
复数形式:nplurals=3;复数=(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 并用技巧翻译它以获得 3 种复数形式,而不是像英语中的 2 种(波兰语需要 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. msgid "%s kóz" msgid_plural "%s kozy" msgstr[0] "%s 1 koza" msgstr[1] "%s 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 翻译
为什么我应该将我的语言设置为 INVALID 'xx' 或其他不存在的翻译以使其在 django 中工作这对我来说很奇怪?你能帮我怎么做吗?