Django 1.11
我不能在我的项目中制作Django翻译模板。 消息被编译和重新编译。
你能帮我一把吗?
settings.py
INSTALLED_APPS = [
...
'frame',
...
]
LANGUAGE_CODE = 'ru-RU'
USE_I18N = True
帧/模板/帧/ frame_form.html
{% extends 'general/cbv/general_form.html' %}
{% load i18n %}
{% block title %}
<h1>{% trans "Create frame" %}</h1>
{% endblock %}
帧/区域/ ru_RU / LC_MESSAGES / django.po
#: templates/frame/frame_form.html:5
msgid "Create frame"
msgstr "Создать сюжет"
树
├── frame
...
│ ├── locale
│ │ └── ru_RU
│ │ └── LC_MESSAGES
│ │ ├── django.mo
│ │ └── django.po
...
│ ├── templates
│ │ └── frame
│ │ ├── frame_form.html
答案 0 :(得分:0)
检查以下内容:
<强> Settings.py 强>
在settings.py
1)确保中间件类按以下顺序
MIDDLEWARE_CLASSES = [
'django.contrib.sessions.middleware.SessionMiddleware',
'django.middleware.locale.LocaleMiddleware',
'django.middleware.common.CommonMiddleware',
]
2)设置语言代码默认值:
LANGUAGE_CODE = 'en-us'
USE_I18N = True
3)将要翻译的语言放到列表中here
from django.utils.translation import gettext_lazy as _
#Example for English and German
LANGUAGES =[ ('en', _('English')),
('de', _('German')),]
4)设置您的Locale路径文件夹(这是您的语言翻译所在的位置)
LOCALE_PATHS = (
os.path.join(SITE_ROOT, 'locale'),
)
<强> URL.py 强>
检查主网址配置文件url.py
urlpatterns = [
path('', include('YOUR APP.urls')),
path('admin/', admin.site.urls),
path('i18n/', include('django.conf.urls.i18n')), #Make sure this is present
]
HTML模板
在您的html页面上的任何HTML template
之前选中{% load i18n %}
后,{% trans "FOO" %}
完成此操作后,以及更改语言的方法。您可能还需要这样的下拉列表:Django change language in html来调试语言更改
创建和修改.po文件
1)使用命令行中的以下命令在settings.py(LOCALE_PATHS)中指定的语言环境目录中创建django.po文件,以创建.po文件,例如english will是:
python manage.py makemessages -l en #en = english replace en for other languages
这将使用YOUR_LANGUAGE / LC_MESSAGES / django.po创建一个目录
请注意,某些语言不会显示,除非由于某些原因(例如简化chinese zh-Hans
而不是zh-hans
而无法确定原因而大写)。
2)进入您想要更改的语言的django.po并更改msgstr ""
msgid "Create frame"
msgstr "Создать сюжет" #This area had translated string added
3)编译消息并在命令行中重新启动服务器
# Compile messages
django-admin compilemessages #this creates a django.mo file in LC_MESSAGES folder
#Run server
python manage.py runserver
当您使用下拉菜单或您选择的任何方式切换语言时,文本应该会更改。
4)如果你添加新的翻译标签,你必须重新制作消息并在命令行中重新编译它们然后运行服务器
#Make messages for all your languages
django-admin makemessages -a
# Compile messages
django-admin compilemessages