首页 > 解决方案 > 我将自定义语言添加到我的语言列表中

问题描述

我在 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。实际上根据说明它应该可以工作。

标签: pythondjango

解决方案


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

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

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

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

推荐阅读