Django 1.11
我无法在我的项目中让 Django 翻译模板。消息被编译和重新编译。
你能在这里踢我一脚吗?
设置.py
INSTALLED_APPS = [
...
'frame',
...
]
LANGUAGE_CODE = 'ru-RU'
USE_I18N = True
Run Code Online (Sandbox Code Playgroud)
框架/模板/框架/frame_form.html
{% extends 'general/cbv/general_form.html' %}
{% load i18n %}
{% block title %}
<h1>{% trans "Create frame" %}</h1>
{% endblock %}
Run Code Online (Sandbox Code Playgroud)
框架/语言环境/ru_RU/LC_MESSAGES/django.po
#: templates/frame/frame_form.html:5
msgid "Create frame"
msgstr "??????? ?????"
Run Code Online (Sandbox Code Playgroud)
树
??? frame
...
? ??? locale
? ? ??? ru_RU
? ? ??? LC_MESSAGES
? ? ??? django.mo
? ? ??? django.po
...
? ??? templates
? ? ??? frame
? ? ??? frame_form.html
Run Code Online (Sandbox Code Playgroud)
检查以下各项:
设置.py
在你的 settings.py
1)确保中间件类按以下顺序
MIDDLEWARE_CLASSES = [
'django.contrib.sessions.middleware.SessionMiddleware',
'django.middleware.locale.LocaleMiddleware',
'django.middleware.common.CommonMiddleware',
]
Run Code Online (Sandbox Code Playgroud)
2) 设置您的语言代码默认值:
LANGUAGE_CODE = 'en-us'
USE_I18N = True
Run Code Online (Sandbox Code Playgroud)
3) 把你想翻译的语言放到一个列表中,可以在这里找到
from django.utils.translation import gettext_lazy as _
#Example for English and German
LANGUAGES =[ ('en', _('English')),
('de', _('German')),]
Run Code Online (Sandbox Code Playgroud)
4) 设置您的语言环境路径文件夹(这是您的语言翻译将出现的地方)
LOCALE_PATHS = (
os.path.join(SITE_ROOT, 'locale'),
)
Run Code Online (Sandbox Code Playgroud)
网址.py
检查主 URL conf 文件中是否有此链接 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
]
Run Code Online (Sandbox Code Playgroud)
HTML模板
在您检查并HTML template完成html 页面上的{% load i18n %}任何之前{% trans "FOO" %}以及更改语言的某些方法之后。您可能还需要这样的下拉菜单: Django change language in html to debug language changes
创建和修改 .po 文件
1) 在 settings.py (LOCALE_PATHS) 中指定的 locale 目录中创建 django.po 文件,在命令行中使用以下命令创建 .po 文件,例如 english 是:
python manage.py makemessages -l en #en = english replace en for other languages
Run Code Online (Sandbox Code Playgroud)
这将创建一个包含 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
Run Code Online (Sandbox Code Playgroud)
3)编译消息并在命令行中重新启动服务器
# Compile messages
django-admin compilemessages #this creates a django.mo file in LC_MESSAGES folder
#Run server
python manage.py runserver
Run Code Online (Sandbox Code Playgroud)
当您使用下拉菜单或您选择的任何方式切换语言时,文本应该更改。
4) 如果您添加新的翻译标签,您必须重新制作消息并在命令行中重新编译它们,然后运行服务器
#Make messages for all your languages
django-admin makemessages -a
# Compile messages
django-admin compilemessages
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4632 次 |
| 最近记录: |