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

时间:2012-10-18 03:53:47

标签: django locale

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

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

Django不支持这种语言。

6 个答案:

答案 0 :(得分:19)

为您的Django应用添加不可用的语言

Uighurئۇيغۇرتىلى的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

答案 1 :(得分:7)

基于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'),
)

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

答案 2 :(得分:3)

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

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

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

答案 3 :(得分:2)

在您的settings.py中

添加

gettext = lambda s: s


LANGUAGES = (
    ('zh_UG', gettext('Uyghur')),
    ('en', gettext('English')),
)
USE_I18N = True

运行


manage.py makemessages -l zh_UG

创建语言文件

答案 4 :(得分: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'),
)
###########################################################

答案 5 :(得分:0)

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

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

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