Я пытаюсь перевести свой проект django с английского на немецкий.В настоящее время он состоит из двух приложений.Mainapp переведен правильно.Другое приложение полностью переведено в файл django.po, но будут показаны только несколько переведенных строк, а остальные по-прежнему останутся на английском.
Для компиляции моих языковых файлов (по одному на каждый из двух текущихapps) Я всегда выполняю следующие команды в корневом каталоге моего проекта:
django-admin makemessages -l de
# Now doing some translations
django-admin compilemessages
Когда я изменяю любую строку перевода и выполняю makemessage и compilemessage, 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 VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2019-09-20 09:17+0200\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"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
#: .\login\templates\login\login.html:9 .\login\templates\login\login.html:13
#: .\login\templates\login\logout.html:7
msgid "Log in"
msgstr "Anmelden"
#: .\login\templates\login\login.html:17
msgid "Need an account?"
msgstr "Noch kein Account?"
#: .\login\templates\login\login.html:17
#: .\login\templates\login\register.html:13
msgid "Sign up"
msgstr "Registrieren"
#: .\login\templates\login\logout.html:5
msgid "You have been logged out!"
msgstr "Sie wurden abgemeldet"
#: .\login\templates\login\logout.html:7
msgid "Home"
msgstr "Start"
#: .\login\templates\login\profile.html:16
msgid "Profile Info"
msgstr "Profil Info"
#: .\login\templates\login\profile.html:21
msgid "Update"
msgstr "Aktualisieren"
#: .\login\templates\login\register.html:9
msgid "Join today"
msgstr "Heute beitreten"
#: .\login\templates\login\register.html:17
msgid "Already have an account?"
msgstr "Sie haben bereits einen Account?"
#: .\login\templates\login\register.html:17
msgid "Sign in"
msgstr "Anmelden"