Django-复数形式的无效令牌:EXPRESSION

时间:2019-03-30 07:46:54

标签: python django django-i18n

我在django网站上添加了“库尔德”语言。 django不支持该语言,因此我添加了以下语言: 在settings.py

gettext = lambda s: s
NEW_LANG_INFO = {
    'ku': {
       'bidi': True,
       'code': 'ku',
       'name': 'Kurdish',
       'name_local': u'کوردی',
    },
}

import django.conf.locale
LANG_INFO = dict(**django.conf.locale.LANG_INFO, **NEW_LANG_INFO)
django.conf.locale.LANG_INFO = LANG_INFO

LANGUAGES = (
    ('en', 'English'),
    ('ku', gettext('Kurdish')),
    ('ar', 'Arabic')
)

现在当我转到mysite.com/en/admin/时,它可以正常工作。当我转到mysite.com/ar/admin/时,它可以正常工作。 但是当我转到mysite.com/ku/admin/时,此消息引发了错误: ValueError at /ku/admin/ invalid token in plural form: EXPRESSION

django版本为1.11.6

问题是什么,我该如何解决?

更新 我发现在locale/ku/LC_MESSAGES的django.po中,最后一行注释是"Plural-Forms: nplurals=INTEGER; plural=EXPRESSION;\n"

2 个答案:

答案 0 :(得分:4)

这也是对相同错误的回答,但情况不同(支持其语言):

French translation raises "ValueError('invalid token in plural form: %s' % value)"

也许有人觉得有帮助。我也在寻找帮助,但发现了您的问题,但是我的解决方案在上面的链接上。 (解决方案是删除项目虚拟环境,然后重新安装)

答案 1 :(得分:1)

我在this post中写了一个更全面的答案。

简而言之,如果您的语言仅具有一种复数形式,例如,对于多于两个的apple,您说apples,请找到此行:

 "Plural-Forms: nplurals=INTEGER; plural=EXPRESSION;\n"

并将其更改为:

"Plural-Forms: nplurals=2; plural=(n != 1);\n"

另外,您还需要删除并重新设置环境。