Переводы в Django 2.2 не работают - PullRequest
1 голос
/ 28 октября 2019

Я работаю над проектом с использованием Python (3.7) и Django (2.2), в котором я должен сделать сайт доступным на 2 языках (английском и китайском). Я много искал и пробовал все возможные решения, но безуспешно. Вот что я попробовал:

  1. Установить gettext в моей системе и связать его
  2. Добавить следующий параметр в settings.py:

    Добавитьпромежуточное программное обеспечение 'django.middleware.locale.LocaleMiddleware', после Session и до Common, затем добавьте USE_I18N = True & USE_L10N = True, после этого упомяните языки как:

    LANGUAGES = (
        ('en', _('English')),
        ('zh-hans', _('简体中文')),
    )
    

    , затем добавьте путь к локали как:

    LOCALE_PATHS = (
        os.path.join(BASE_DIR, 'locale'),
    )
    
  3. Затем выполните команду как: django-admin makemessages -all она создаст каталог как:

    └── zh_hans
    └── LC_MESSAGES
        └── django.po
    
  4. После этого я добавлю переводы в django.po и запустил команду как django-admin compilemessage, которая генерирует файл django.mo

  5. Я добавил URL для i18n как:

    re_path(r'^i18n/', include('django.conf.urls.i18))
    
  6. и ниже - мой шаблон, который загружается на render из вида:

    {% load i18n %}
    <form action="{% url 'set_language' %}" method="post">
          {% csrf_token %}
          <input name="next" type="hidden" value="{{ redirect_to }}"/>
          <select name="language">
                 {% get_current_language as LANGUAGE_CODE %}
                 {% get_available_languages as LANGUAGES %}
                 {% for lang in LANGUAGES %}
                 <option value="{{ lang.0 }}" {% if lang.0 == LANGUAGE_CODE %} selected="selected"{% endif %}>
                 {{ lang.1 }} ({{ lang.0 }})
                 </option>
                 {% endfor %}
           </select>
           <input type="submit" value="Go"/>
    </form>
    <h1>{% trans 'Test 2' %}</h1> 
    {% get_current_language as LANGUAGE_CODE %}
    <h3>{{ LANGUAGE_CODE }} </h3>
    <h4>{% trans "Welcome to our page" %}</h4>
    

Когда я меняю язык, выбирая из выпадающего списка,LANGUAGE_CODE печатается правильно, но текст ниже Welcome to our page не переводится.

Что я сделал не так?

...