如何在Django中添加新语言? Django不支持我的语言“维吾尔语”或“维吾尔语”。
我可以在项目中添加新的语言区域设置文件并使用它吗? 例如:zh_UG
Django不支持这种语言。
答案 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)
添加
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 是新添加的语言