【问题标题】:Django- invalid token in plural form: EXPRESSIONDjango-复数形式的无效标记:EXPRESSION
【发布时间】:2019-03-30 07:46:53
【问题描述】:

我在我的 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中,cmets的最后一行是"Plural-Forms: nplurals=INTEGER; plural=EXPRESSION;\n"

【问题讨论】:

标签: python django django-i18n


【解决方案1】:

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

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

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

【讨论】:

    【解决方案2】:

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

    简而言之,如果您的语言只有一种复数形式,例如,对于两个以上的apple,您说apples,请找到以下行:

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

    并将其更改为:

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

    您还需要再次删除并设置您的环境。

    【讨论】:

    • 别忘了重新编译你的消息。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-01-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-04-05
    • 2017-07-28
    相关资源
    最近更新 更多