Django:翻译不再更新



我正在尝试将我的django项目从英语翻译成德语。它目前由两个应用程序组成。主应用程序已正确翻译。另一个应用程序在 django.po 文件中完全翻译,但只显示一些翻译的字符串,其他的仍然保留为英文。

为了编译我的语言文件(当前两个应用程序中的每一个一个(,我总是在项目的根目录中执行以下命令:

django-admin makemessages -l de
# Now doing some translations
django-admin compilemessages

当我更改任何翻译字符串并执行 makemessage 和编译消息时,django 仍将使用旧翻译而不是新翻译。所以看起来它前段时间有效,但现在编译/使用翻译出了问题。

例如,在此模板中,"登录"和"注册"字符串已正确翻译,但"需要帐户?"字符串不是因为在翻译不再有效时添加的。但不幸的是,我不知道发生了什么变化以及为什么它不再起作用。

{% extends "mainapp/base.html" %}
{% load crispy_forms_tags %}
{% load i18n %}
{% block content %}
<div class="content-section">
<form method="POST"> {% csrf_token %}
<fieldset class="form-group">
<legend class="border-bottom mb-4">{% trans "Log in" %}</legend>
{{ form|crispy }}
</fieldset>
<div class="form-group">
<button class="btn btn-outline-info" type="submit">{% trans "Log in" %}</button>
</div>
</form>
<div class="border-top pt-3">
<small class="text-muted">{% trans "Need an account?" %}<a class="ml-2" href="{% url 'register' %}">{% trans "Sign up" %}</a></small>
</div>
</div>
{% endblock content%}

这些是我的设置:

MIDDLEWARE = [
'django.middleware.security.SecurityMiddleware',
'django.contrib.sessions.middleware.SessionMiddleware',
'django.middleware.locale.LocaleMiddleware',
'django.middleware.common.CommonMiddleware',
'django.middleware.csrf.CsrfViewMiddleware',
'django.contrib.auth.middleware.AuthenticationMiddleware',
'django.contrib.messages.middleware.MessageMiddleware',
'django.middleware.clickjacking.XFrameOptionsMiddleware',
]
TEMPLATES = [
{
'BACKEND': 'django.template.backends.django.DjangoTemplates',
'DIRS': [os.path.join(BASE_DIR, 'templates')],
'APP_DIRS': True,
'OPTIONS': {
'context_processors': [
'django.template.context_processors.debug',
'django.template.context_processors.request',
'django.contrib.auth.context_processors.auth',
'django.contrib.messages.context_processors.messages',
],
},
},
]
LANGUAGE_CODE = 'en'
TIME_ZONE = 'UTC'
USE_I18N = True
USE_L10N = True
USE_TZ = True
LOCALE_PATHS = (os.path.join(BASE_DIR, 'locale'),)

我还看了一下这个主题以及它的所有参考主题: Django:只有一个元素被翻译

非常感谢您的帮助!

顺便说一下,这是 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.
#
msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSIONn"
"Report-Msgid-Bugs-To: n"
"POT-Creation-Date: 2019-09-20 09:17+0200n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONEn"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>n"
"Language-Team: LANGUAGE <LL@li.org>n"
"MIME-Version: 1.0n"
"Content-Type: text/plain; charset=UTF-8n"
"Content-Transfer-Encoding: 8bitn"
#: .logintemplatesloginlogin.html:9 .logintemplatesloginlogin.html:13
#: .logintemplatesloginlogout.html:7
msgid "Log in"
msgstr "Anmelden"
#: .logintemplatesloginlogin.html:17
msgid "Need an account?"
msgstr "Noch kein Account?"
#: .logintemplatesloginlogin.html:17
#: .logintemplatesloginregister.html:13
msgid "Sign up"
msgstr "Registrieren"
#: .logintemplatesloginlogout.html:5
msgid "You have been logged out!"
msgstr "Sie wurden abgemeldet"
#: .logintemplatesloginlogout.html:7
msgid "Home"
msgstr "Start"
#: .logintemplatesloginprofile.html:16
msgid "Profile Info"
msgstr "Profil Info"
#: .logintemplatesloginprofile.html:21
msgid "Update"
msgstr "Aktualisieren"
#: .logintemplatesloginregister.html:9
msgid "Join today"
msgstr "Heute beitreten"
#: .logintemplatesloginregister.html:17
msgid "Already have an account?"
msgstr "Sie haben bereits einen Account?"
#: .logintemplatesloginregister.html:17
msgid "Sign in"
msgstr "Anmelden"

几乎可以肯定问题出在local/de/LC_MESSAGES/django.podjango.po文件中

搜索未翻译的字符串,然后查看其上方的文本。 我不记得它到底是什么样子的,但如果它周围有一些模糊的东西,那么这就是问题所在。 只需删除它然后manage.py compilemessages它应该翻译

最新更新