Django 1.11
No puedo hacer que Django traduzca plantillas en mi proyecto. Los mensajes fueron compilados y recompilados.
¿Podrías darme una patada aquí?
configuración.py
INSTALLED_APPS = [ ... 'frame', ... ] LANGUAGE_CODE = 'ru-RU' USE_I18N = Truemarco/plantillas/marco/frame_form.html
{% extends 'general/cbv/general_form.html' %} {% load i18n %} {% block title %} <h1>{% trans "Create frame" %}</h1> {% endblock %}marco/locale/ru_RU/LC_MESSAGES/django.po
#: templates/frame/frame_form.html:5 msgid "Create frame" msgstr "Создать сюжет"árbol
├── frame ... │ ├── locale │ │ └── ru_RU │ │ └── LC_MESSAGES │ │ ├── django.mo │ │ └── django.po ... │ ├── templates │ │ └── frame │ │ ├── frame_form.htmlCompruebe lo siguiente:
Configuración.py
En tu settings.py
1) Asegúrese de que las clases de Middleware estén en el siguiente orden
MIDDLEWARE_CLASSES = [ 'django.contrib.sessions.middleware.SessionMiddleware', 'django.middleware.locale.LocaleMiddleware', 'django.middleware.common.CommonMiddleware', ]2) Establezca su código de idioma predeterminado:
LANGUAGE_CODE = 'en-us' USE_I18N = True3) Ponga el idioma que desea traducir en una lista que se puede encontrar aquí
from django.utils.translation import gettext_lazy as _ #Example for English and German LANGUAGES =[ ('en', _('English')), ('de', _('German')),]4) Configure su carpeta de ruta de configuración regional (aquí es donde aparecerán las traducciones de su idioma)
LOCALE_PATHS = ( os.path.join(SITE_ROOT, 'locale'), )URL.py
Compruebe que tiene este enlace en el archivo de configuración de la URL principal url.py
urlpatterns = [ path('', include('YOUR APP.urls')), path('admin/', admin.site.urls), path('i18n/', include('django.conf.urls.i18n')), #Make sure this is present ]plantilla html
Después de verificar esto y hacer su HTML template con {% load i18n %} antes de cualquiera de los {% trans "FOO" %} en su página html y alguna forma de cambiar los idiomas. También es posible que desee algo como este menú desplegable: Django cambia el idioma en html para depurar cambios de idioma
Creación y modificación de archivos .po
1) Cree archivos django.po en el directorio local que especifique en settings.py (LOCALE_PATHS) usando el siguiente comando en la línea de comandos para crear los archivos .po, por ejemplo, en inglés sería:
python manage.py makemessages -l en #en = english replace en for other languagesEsto crea un directorio con YOUR_LANGUAGE/LC_MESSAGES/django.po
Tenga en cuenta que algunos idiomas no aparecerán a menos que esté en mayúsculas por algún motivo, como chinese zh-Hans en lugar de zh-hans no estoy seguro de por qué.
2) Vaya al django.po del idioma que desea cambiar y cambie el msgstr ""
msgid "Create frame" msgstr "Создать сюжет" #This area had translated string added3) Compile los mensajes y reinicie el servidor en la línea de comandos
# Compile messages django-admin compilemessages #this creates a django.mo file in LC_MESSAGES folder #Run server python manage.py runserverEl texto debería cambiar cuando cambias de idioma usando el menú desplegable o de la forma que elijas.
4) Si agrega nuevas etiquetas de traducción, debe rehacer los mensajes y recompilarlos en la línea de comandos y luego ejecutar el servidor
#Make messages for all your languages django-admin makemessages -a # Compile messages django-admin compilemessages