plantilla de traducción django {% trans “algo”%}

Ok, he estado buscando locamente esto, creo que es un problema simple.

Yo uso Django 1.4

El problema es que django no traducirá un simple {% trans “trabajo”%} en mi plantilla.

Esto es lo que he hecho:

Settings.py:

    LANGUAGE_CODE = 'en-us' USE_I18N = True MIDDLEWARE_CLASSES = ( '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', # Uncomment the next line for simple clickjacking protection: # 'django.middleware.clickjacking.XFrameOptionsMiddleware', ) TEMPLATE_CONTEXT_PROCESSORS = ( "django.contrib.auth.context_processors.auth", "django.core.context_processors.debug", "django.core.context_processors.i18n", "django.core.context_processors.media", "django.core.context_processors.static", "django.core.context_processors.request", ) LOCALE_PATHS = ( '/home/m00p/PycharmProjects/astrid/locale' ) 

    esta es mi estructura de mapa:

     / myproject/ apps/ locale/ template/ 

    Así que corrí

    django-admin.py makemessages -l nl -i settings.py

    y se creó correctamente en la carpeta de configuración regional nl / LC_MESSAGES / django.po, luego edito la traducción que se encuentra en django.po

     #: templates/base.html:22 msgid "work" msgstr "ddddddddddddd" 

    Luego ejecuto el comando comstackr

    django-admin.py compilemessages

    y también creó con éxito un archivo django.mo en la carpeta correcta

    Agregué esto también en el myproject / urls.py

     urlpatterns = patterns('', url(r'^i18n/', include('django.conf.urls.i18n')), ) urlpatterns += i18n_patterns('', url(r'^$', 'front.views.home', name='home'), ) 

    Agregué esto en el archivo base.html para poder cambiar el idioma

      {% csrf_token %}   {% get_language_info_list for LANGUAGES as languages %} {% for language in languages %} {{ language.name_local }} ({{ language.code }}) {% endfor %}    

    Entonces, cuando voy al sitio web obtengo 127.0.0.1:8000/en/ en la url, esto es correcto porque englisch es el idioma predeterminado, cuando luego lo cambio con el formulario a NL, redirige a 127.0.0.1:8000 / nl / pero el texto que traduje no cambió. También estoy seguro de que el idioma es NL porque cuando muestro {{LANGUAGE_CODE}} dice NL.

    ¿Alguien sabe por qué no cambia?

    Gracias m00p

    PROBLEMA RESUELTO

    Durante el proceso, cuando estaba agregando cosas que olvidé para que funcionara, reinicié mi servidor de implementación, pero no borré la memoria caché de mi navegador , todavía estaba usando las páginas antiguas, así que cuando borré los datos de mi navegador en Chrome y Revisó la página y cambió el idioma que la tradujo correctamente. Gracias por las sugerencias de todos modos!

    En Django 1.4, el directorio de configuración regional en la raíz del proyecto ya no es compatible. Debe agregarlo a la configuración de LOCALE_PATHS , que está vacía de forma predeterminada. Configuraciones de Django .

    Sin embargo, los comandos de administración involucrados en la generación de configuración regional parecen funcionar, por lo que no sé si ya lo hizo.

    Acabo de pasar algunas horas tratando de solucionar este problema en Django 1.5 mientras trabajaba en mi nuevo proyecto Sportolio y resultó que faltaba una coma al final de LOCALE_PATH

     LOCALE_PATHS = ( '/path/to/my/project/locale/', ) 

    Esto es muy importante, ya que Django espera que LOCALE_PATHS sea un TUPLE no un String.

    Espero que salve la vida de alguien 🙂

    Tuve la misma situación. Parte de las frases fueron traducidas, pero la mayoría solo mostraba la clave. Tenemos dos idiomas principales en y fa. Ambos tenían el mismo problema. Revisé todos los mismos problemas y todos los documentos en línea sobre las traducciones de django. Puedo decir que lo intenté casi todo. La única diferencia era que estábamos probando en el servidor de producción. ¡Y no recargué el servidor! Así que este comando de una línea me sacó de mi miseria:

     sudo /etc/init.d/uwsgi reload 

    ¡Lo que estaba haciendo mal fue que reinicié wsgi en lugar de uwsgi!

    Si desea hacer lo que hice, aquí está: Realizo los pasos en este orden en el servidor:

     django-admin makemessages -l en django-admin makemessages -l fa 

    añadir frases persas y algunos textos en inglés para probar.

     django-admin compilemessages python manage.py clear_cache python manage.py runserver 

    El servidor se ejecuta sin errores. Pero ninguno de los cambios en en o fa tienen lugar. Parece que django se está cargando desde la caché antigua. Entonces, eliminé todo el caché, e incluso eliminé todos los archivos del servidor e instalé todo el proyecto nuevamente. Sin embargo, el mismo problema.

    Hice mensajes desde mi django en mi computadora portátil y los envié al servidor. Además, probé diferentes editores de texto y herramientas de traducción como poedit para generar archivos po y mo. Sin embargo, el problema sigue mostrando.

    Usé y reemplacé las tags trans para ver si funciona en alguna de ellas:

     {% trans ' ' %} {% trans " " %} {% blocktrans %} {% endblocktrans %} {% trans "xyz" az XYZ %} {{ XYZ }} {{ _() }} 

    ¡Ninguno de ellos funcionó!

    Pero recargar el servidor pone todo en orden. Espero que pueda ser útil para alguien.