如何在Django中添加默认情况下不支持的语言?

时间:2018-08-09 11:44:00

标签: python django translation

我正在尝试创建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

有人知道我该如何解决吗? 非常感谢!

1 个答案:

答案 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