如何在 Django 中添加新语言?Django 不支持我的语言“维吾尔语”或“维吾尔语”。
我可以在我的项目中添加新的语言区域设置文件并使用它吗?例如:zh_UG
Django 不支持这种语言。
向您的 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
基于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'),
)
第三步,在语言环境目录中添加语言环境定义。
如果有人遇到这种情况,并且将使用已接受的答案(也请检查其评论)并且仍然会重定向到 /en/ 而不是额外的语言 - 您需要为该语言环境创建 .mo 文件。至少是个假人。
Django 通过检查语言是否可以加载 .mo 文件来检查语言是否有效。标准语言没有问题,因为 Django 附带了一堆标准语言,但对于您的自定义语言,它不存在。
我希望这会节省你的时间。
在你的 settings.py 添加
gettext = lambda s: s 语言 = ( ('zh_UG', gettext('维吾尔语')), ('en', gettext('English')), ) USE_I18N = 真
跑
manage.py makemessages -l zh_UG
创建语言文件
# 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'),
)
###########################################################
只是想补充一点,无论您是否为文件添加了一些翻译,您都需要运行以下命令:
python manage.py makemessages -l tj
python manage.py compilemessages
注意这里的 tj 是新添加的语言