Django添加库尔德语后访问/admin报错:invalid token in plural form
嘿,这个问题我之前也碰到过!你遇到的ValueError: invalid token in plural form: EXPRESSION完全是因为库尔德语的django.po文件里的复数规则行还留着模板占位符,没替换成符合库尔德语语法的实际规则。
问题根源
你添加的库尔德语本地化文件(locale/ku/LC_MESSAGES/django.po)最后一行的Plural-Forms还是官方模板里的占位符:
"Plural-Forms: nplurals=INTEGER; plural=EXPRESSION;\n"
而英语(en)和阿拉伯语(ar)的PO文件已经自带了正确的复数规则配置,所以访问它们的admin页面没问题。Django无法识别INTEGER和EXPRESSION这些占位符,才抛出了错误。
具体修复步骤
修改复数规则行
打开locale/ku/LC_MESSAGES/django.po文件,找到最后的Plural-Forms行,把它替换成库尔德语(Kurmanji,通常对应代码ku)的标准复数规则:Plural-Forms: nplurals=2; plural=(n != 1);解释:库尔德语中,当数量为1时用单数形式,其他所有情况用复数形式。如果你的库尔德语变体(比如Sorani,代码
ckb)有不同的复数规则,可以根据实际语法调整nplurals和plural的表达式。编译本地化文件
在项目根目录下执行编译命令,把修改后的PO文件转换成Django能识别的MO文件:django-admin compilemessages -l ku如果你没全局安装Django,也可以用
python manage.py compilemessages -l ku。重启服务验证
重启你的Django开发服务器,再访问/ku/admin/,应该就能正常加载了!
内容的提问来源于stack exchange,提问作者msln

