我正在尝试创建5种语言的网站。主要语言应为库尔德语,但Django默认不支持该语言。我已经尝试过how to add new languages into Django?
但是对我没用。我收到错误消息
**LANG_INFO = dict(django.conf.locale.LANG_INFO.items() + EXTRA_LANG_INFO.items())
TypeError:+不支持的操作数类型:“ dict_items”和“ dict_items” **
我也已经尝试过复制英语 po文件,并将其重命名为“ ku”(库尔德语),然后将其添加到django / conf / init .py中。 。
'ku': {
'bidi': False,
'code': 'ku',
'name': 'Kurdish',
'name_local': 'Kurdî',
},
我可以按模板查看按语言分类的语言,但是单击该按钮时会收到错误消息。
File "/usr/lib/python3.6/gettext.py", line 91, in _tokenize
raise ValueError('invalid token in plural form: %s' % value)
ValueError:无效的令牌,具有复数形式:EXPRESSION
有人知道我该如何解决吗? 非常感谢!
答案 0 :(得分:0)
在您的settings.py
'django.middleware.locale.LocaleMiddleware'
在您的设置中添加LOCALE_PATHS = (
os.path.join(PROJECT_PATH, 'locale/'),
)
。MIDDLEWARE
在settings.py中添加LOCALE_PATHS,这是翻译文件的存储位置:
USE_I18N = True
启用i18N
'OPTIONS': {
'context_processors': [
'django.template.context_processors.debug',
'django.template.context_processors.request',
'django.contrib.auth.context_processors.auth',
'django.contrib.messages.context_processors.messages',
'social_django.context_processors.backends',
'social_django.context_processors.login_redirect',
],
},
在 settings.TEMPLATES 添加
url(r'^i18n/', include('django.conf.urls.i18n')),
在urls.py中添加
{% load i18n %}
<p>{% trans "cîhana hello" %}</p>
然后在模板中,您将说“ Hello world”
您必须加载il18n
./manage.py makemessages -l en #you will translate it to en since your default language is 'ku'
然后您必须在控制台中发送消息,它将带标签trans的所有字符串放入您的语言环境文件夹中
msgid "cîhana hello"
msgstr "Hello world"
现在剩下的就是进入您的/ locales文件夹,并编辑每个.po文件。填写每个msgstr的数据。这是一个这样的例子:
./manage.py compilemessages
然后您运行 LANGUAGES = [('en', 'English'), ('ku', 'Kurdish', ('de', 'Deutsch'), ('ru', 'Russian'), ('fr', 'French'))]
一切都会像灵符一样工作
如果您需要更多语言,可以
locale/[language-code]/LC_MESSAGES/django.po
#expect to find something like this
#: templates/index.html:35
msgid "Email"
msgstr "Имейл"
每次您都必须在
中编辑消息npm install