16

如何在 Django 中添加新语言?Django 不支持我的语言“维吾尔语”或“维吾尔语”。

我可以在我的项目中添加新的语言区域设置文件并使用它吗?例如:zh_UG

Django 不支持这种语言。

4

6 回答 6

25

向您的 Django 应用程序添加不可用的语言

维吾尔语 ئۇيغۇر تىلى 的 ISO 语言代码是“ug”。

在您的settings.py 中

from django.conf import global_settings

gettext_noop = lambda s: s

LANGUAGES = (
       ('ug', gettext_noop('Uighur')),
)

EXTRA_LANG_INFO = {
    'ug': {
        'bidi': True, # right-to-left
        'code': 'ug',
        'name': 'Uighur',
        'name_local': u'\u0626\u06C7\u064A\u063A\u06C7\u0631 \u062A\u0649\u0644\u0649', #unicode codepoints here
    },
}

# 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

# Languages using BiDi (right-to-left) layout
LANGUAGES_BIDI = global_settings.LANGUAGES_BIDI + ["ug"]

和:

manage.py makemessages -l ug
manage.py compilemessages
于 2013-11-28T11:30:36.977 回答
11

基于laffuste的回答。第一步,在 settings.py 中添加语言定义:

EXTRA_LANG_INFO = {
    'ms': {
        'bidi': False, # right-to-left
        'code': 'ms',
        'name': 'Bahasa Melayu',
        'name_local': u'Bahasa Melayu', #unicode codepoints here
    },
}

# Add custom languages not provided by Django
import django.conf.locale
from django.conf import global_settings
LANG_INFO = dict(django.conf.locale.LANG_INFO.items() + EXTRA_LANG_INFO.items())
django.conf.locale.LANG_INFO = LANG_INFO

# Languages using BiDi (right-to-left) layout
global_settings.LANGUAGES = global_settings.LANGUAGES + (("ms",'Bahasa Melayu'),)

第二步,在settings.py中添加语言环境:

import os

PACKAGE_ROOT = os.path.abspath(os.path.dirname(__file__))
LOCALE_PATHS = (
    os.path.join(PACKAGE_ROOT, 'locale'),
)

第三步,在语言环境目录中添加语言环境定义。

于 2014-01-26T16:22:14.830 回答
4

如果有人遇到这种情况,并且将使用已接受的答案(也请检查其评论)并且仍然会重定向到 /en/ 而不是额外的语言 - 您需要为该语言环境创建 .mo 文件。至少是个假人。

Django 通过检查语言是否可以加载 .mo 文件来检查语言是否有效。标准语言没有问题,因为 Django 附带了一堆标准语言,但对于您的自定义语言,它不存在。

我希望这会节省你的时间。

于 2016-03-23T16:19:16.170 回答
2

在你的 settings.py 添加

gettext = lambda s: s


语言 = (
    ('zh_UG', gettext('维吾尔语')),
    ('en', gettext('English')),
)
USE_I18N = 真

manage.py makemessages -l zh_UG

创建语言文件

于 2012-10-18T11:42:15.413 回答
0
# add Kyrgyz lang 
###########################################################
from django.conf import global_settings
gettext = lambda s: s
LANGUAGES = (
    ('ru', gettext('Russia')),
    ('ky', gettext('Kyrgyz')),
)
EXTRA_LANG_INFO = {
    'ky': {
        'bidi': False,
        'code': 'ky',
        'name': 'Kyrgyz',
        'name_local': u"Кыргызча",
    },
}

import django.conf.locale
from django.conf import global_settings
import django.conf.locale
LANG_INFO = dict(django.conf.locale.LANG_INFO, **EXTRA_LANG_INFO)
django.conf.locale.LANG_INFO = LANG_INFO
global_settings.LANGUAGES = global_settings.LANGUAGES + [("ky", 'Кыргызча')]

import os
PACKAGE_ROOT = os.path.abspath(os.path.dirname(__file__))
LOCALE_PATHS = (
    os.path.join(BASE_DIR, 'locale'),
)
###########################################################
于 2020-05-20T13:22:21.293 回答
0

只是想补充一点,无论您是否为文件添加了一些翻译,您都需要运行以下命令:

python manage.py makemessages -l tj
python manage.py compilemessages

注意这里的 tj 是新添加的语言

于 2021-01-23T09:37:11.560 回答