【发布时间】:2020-09-21 14:48:19
【问题描述】:
我不知道我错过了什么。我正在使用 django 翻译。翻译适用于包文件夹以外的所有应用程序,即包含settings.py的应用程序。
我的文件结构是这样的:
my-project/
manage.py
locale/
mysite/
__init__.py
settings.py
lacale/
templates/
base.html
urls.py
profile/
__init__.py
locale/
templates/
profile/
profile.html
views.py
urls.py
这里是设置文件:
MIDDLEWARE = [
....
'django.contrib.sessions.middleware.SessionMiddleware',
'django.middleware.locale.LocaleMiddleware',
'django.middleware.common.CommonMiddleware',
....
]
LANGUAGE_CODE = 'es'
USE_I18N = True
USE_L10N = True
USE_TZ = True
LANGUAGES = (
('en-us', _('English')),
('es', _('Spanish')),
)
LOCALE_PATHS = (
os.path.join(BASE_DIR, 'locale'),
)
我的base.html 看起来很像这个翻译不起作用:
{% load static %}
{% load i18n %}
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8"/>
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<meta name="author" content="Biplove Lamichhane">
<title>{% block title %}{% endblock title %}</title>
</head>
<body>
<h1>{% trans "Base" %}</h1>
{% block content %}
{% endblock %}
</body>
我的profile.html 是这样的,这个翻译确实有效:
{% extends 'base.html' %}
{% load static %}
{% load i18n %}
{% block title %}Title{% endblock title %}
{% block content %}
<h2>{% trans "Check" %}</h2>
{% endblock %}
另外,我已经正确创建了django.po 文件,并添加了我的翻译和编译消息以创建django.mo。
编辑
django.po 用于 base.html:
# SOME DESCRIPTIVE TITLE.
# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
# This file is distributed under the same license as the PACKAGE package.
# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
#
#, fuzzy
msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2020-09-21 12:25+0545\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
"Language: \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
#: profile/templates/profile/profile.html:9
msgid "Check"
msgstr "Spanish check"
djanog.po 用于个人资料:
# SOME DESCRIPTIVE TITLE.
# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
# This file is distributed under the same license as the PACKAGE package.
# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
#
#, fuzzy
msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2020-09-21 21:44+0545\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
"Language: \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
#: mysite/settings.py:146
msgid "English"
msgstr ""
#: mysite/settings.py:147
msgid "Spanish"
msgstr ""
#: mysite/templates/base.html:26
msgid "Base"
msgstr "Spanish language for base"
【问题讨论】:
-
你为什么把
{% load i18n %}放了两次? -
感谢您指出...这是缩短问题时的错误...实际上,它只是 1。
-
向我们展示您的
django.po文件
标签: python django django-templates translation