Traducción de textos en los templates



Este post es un poco egoista, ya que no explicaré mucho, pero si dejaré los pasos para traducir los textos utilizados en los templates de django-cms (también funciona así en cualquier aplicación django).

En los templates debemos cargar i18n (internacionalización):

{% load i18n %}

Luego, cuando añadimos texto "traducible", lo hacemos de la siguiente manera:

{% trans "Text in English" %}

Por ejemplo, y extrayendo un trozo del template de este sitio:

{% if author %}{% trans "Entries by" %} {{ author.get_full_name }}{% elif archive_date %}

Por supuesto que siempre debemos elegir un idioma para el template, y realizar la tradución a otro.

En settings.py debemos tener dos configuraciones:

USE_I18N = True
LOCALE_PATHS = (os.path.join(PROJECT_DIR, 'locale'), )

En mi caso, PROJECT_DIR es:

PROJECT_DIR = os.path.abspath(os.path.dirname(__file__))

Y más específicamente de django-cms:

LANGUAGES = (
    ## Customize this
    ('es', gettext('es')),
)

Debemos crear una carpeta llamada locale en la carpeta del proyecto (indicado en LOCALE_PATHS).

Luego, debemos seguir estos pasos cada vez que modifiquemos (o agreguemos) texto para traducir (en la terminal)

$ django-admin.py makemessages -l es
$ django-admin.py compilemessages

Esto generará un archivo .mo con la traducción compilada.

Muuuuucha más info acá.

Suerte!

Comments


Comments powered by Disqus