如何在Django 3中添加土库曼语(tm)语言支持
在Django 3中添加土库曼语(tm)的解决方案
一、修正settings.py配置
你的现有配置存在冗余(重复导入django.conf.locale),且直接修改global_settings不是推荐做法,以下是优化后的配置:
import os from django.utils.translation import gettext_lazy as _ BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__))) # 指定翻译文件存放路径,先确保这个目录存在 LOCALE_PATHS = ( os.path.join(BASE_DIR, 'locale'), ) # 项目支持的语言列表 LANGUAGES = ( ('ru', _('Russian')), ('tm', _('Turkmen')), ) # 补充土库曼语的语言元信息 EXTRA_LANG_INFO = { 'tm': { 'bidi': False, 'code': 'tm', 'name': 'Turkmen', 'name_local': "Turkmence", }, } # 扩展Django内置的语言信息 import django.conf.locale django.conf.locale.LANG_INFO.update(EXTRA_LANG_INFO) # 必须启用国际化中间件,放在SessionMiddleware之后、CommonMiddleware之前 MIDDLEWARE = [ # ... 其他已有的中间件 'django.middleware.locale.LocaleMiddleware', ] # 如果用模板渲染,确保上下文处理器包含i18n TEMPLATES = [ { # ... 其他模板配置 'OPTIONS': { 'context_processors': [ # ... 其他处理器 'django.template.context_processors.i18n', ], }, }, ]
二、搭建翻译文件目录
在项目根目录下创建对应目录结构:
mkdir -p locale/tm/LC_MESSAGES
三、生成并编译翻译文件
- 提取项目中需要翻译的字符串:
python manage.py makemessages -l tm
执行后会在locale/tm/LC_MESSAGES下生成django.po文件,打开它把待翻译的内容替换成土库曼语。
- 编译翻译文件为Django可识别的二进制格式:
python manage.py compilemessages
这会生成django.mo文件,Django靠它加载翻译内容。
四、验证是否生效
在视图或模板里测试翻译:
- 视图示例:
from django.utils.translation import gettext as _ from django.http import HttpResponse def test_view(request): msg = _("Hello World") return HttpResponse(msg)
- 模板示例(记得先加载i18n标签):
{% load i18n %} <h1>{% trans "Hello World" %}</h1>
切换语言为tm,查看内容是否显示对应的土库曼语翻译即可。
内容的提问来源于stack exchange,提问作者Mayagozel Jumakulyyewa
相关产品推荐
相关产品推荐

