python - 我将自定义语言添加到我的语言列表中

标签 python django

我在 Django 中添加自定义语言时遇到问题。这是settings.py的配置:

LANGUAGES = [
('en', 'English'),
('ru', 'Russian'),
('uz', 'Uzbek'),
]

EXTRA_LANG_INFO = {
'uz': {
    'bidi': False,
    'code': 'uz',
    'name': 'Uzbek',
    'name_local': "O'zbek",
},
}

import django.conf.locale
LANG_INFO = dict(django.conf.locale.LANG_INFO.items() +   EXTRA_LANG_INFO.items())
django.conf.locale.LANG_INFO = LANG_INFO
global_settings.LANGUAGES = global_settings.LANGUAGES + [("uz", 'Uzbek')]

但我遇到以下错误:

unsupported operand type(s) for +: 'dict_items' and 'dict_items'    

我在 ubuntu 18.04 上使用 django 2.1 版和 pycharm 作为 IDE。实际上按照说明应该可以工作。

最佳答案

基本上,您不必先将 LANG_INFO 字典转换为键值对列表,然后将它们添加在一起。您可以做的只是使用新旧键值对字典创建一个新字典。我还建议用 LANGUAGES 装饰 name 以便将来翻译。我正在下面的修改版本中编写您的代码:

from django.utils.translation import gettext_noop

LANGUAGES = [
    ('en', gettext_noop('English')),
    ('ru', gettext_noop('Russian')),
    ('uz', gettext_noop('Uzbek')),
]

EXTRA_LANG_INFO = {
    'uz': {
        'bidi': False,  # right-to-left
        'code': 'uz',
        'name': 'Uzbek',
        'name_local': "O'zbek",
    },
}

# Add custom languages not provided by Django
import django.conf.locale
LANG_INFO = dict(django.conf.locale.LANG_INFO, **EXTRA_LANG_INFO)
django.conf.locale.LANG_INFO = LANG_INFO

还有一件事,您不必覆盖 Django global_settings 中的 LANGUAGES 属性,因为您已经在项目设置中覆盖了它。所以这一行可以被忽略:

global_settings.LANGUAGES = global_settings.LANGUAGES + [("uz", 'Uzbek')]

关于python - 我将自定义语言添加到我的语言列表中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52606576/

相关文章:

Django 和干草堆嗖嗖地响

具有相同键的 Python 字典排序

python - 为什么字典只打印最后 3 个项目?

python - 如何从前面弹出列表元素?

django - 如何对 Django 'F' 类型进行算术运算?

django - 为什么多处理在 Django runserver 上工作而不在 nginx uwsgi 上工作?

Django 静态与用户上传的文件

python - 更改 Pandas 数据框中特定列的数据类型

python - virtualenvwrapper默认将站点包存储在什么目录中?

python - PIL - 将图像保存为 .jpg 不起作用