Django: перевод больше не обновляется - PullRequest
0 голосов
/ 20 сентября 2019

Я пытаюсь перевести свой проект 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"

1 Ответ

0 голосов
/ 20 сентября 2019

Проблема почти наверняка в файле django.po в local/de/LC_MESSAGES/django.po

Поиск строки, которая не переводится, затем посмотрите на текст над ней.Я не могу точно вспомнить, как это выглядит, но если в этом есть что-то нечеткое, то это проблема.Просто удалите это и затем manage.py compilemessages, и оно должно перевести

...