Internacionalización y localización

Resumen

El objetivo de la internacionalización y la localización es permitir que una sola aplicación web ofrezca su contenido en idiomas y formatos adaptados al público.

Django tiene un completo soporte para traducción de texto, formateo de fechas, horas y números y zonas horarias.

En esencia, Django hace dos cosas:

  • Permite a los desarrolladores y autores de plantillas especificar qué partes de sus aplicaciones deben ser traducidas o formateadas para idiomas y culturas locales.

  • Utiliza estas conexiones para localizar aplicaciones web para usuarios particulares según sus preferencias.

La traducción depende del idioma objetivo, y el formato suele depender del país objetivo. Esta información se proporciona por los navegadores en la cabecera Accept-Language. Sin embargo, la zona horaria no está disponible de manera inmediata.

Definiciones

Las palabras «internacionalización» y «localización» a menudo causan confusión; aquí tienes una definición simplificada:

Internacionalización

Preparando el software para la localización. Normalmente realizado por desarrolladores.

Localización

Escribiendo las traducciones y formatos locales. Normalmente realizado por traductores.

Más detalles se pueden encontrar en el FAQ de internacionalización web del W3C, el artículo de **Wikipedia**_ o la documentación de **gettext GNU**_.

Advertencia

La traducción está controlada por la configuración USE_I18N. Sin embargo, implica internacionalización y localización. El nombre de la configuración es un resultado desafortunado de la historia de Django.

Aquí tienes algunos otros términos que nos ayudarán a manejar un lenguaje común:

nombre de localización

Un nombre de zona horaria, ya sea una especificación de idioma en la forma ll o una combinación de idioma y país en la forma ll_CC. Ejemplos: it, de_AT, es, pt_BR, sr_Latn. La parte del idioma siempre está en minúsculas. La parte del país está en mayúscula si tiene más de 2 caracteres, de lo contrario está en mayúscula. El separador es un guión bajo.

código de idioma

Representa el nombre de un idioma. Los navegadores envían los nombres de los idiomas que aceptan en la cabecera HTTP Accept-Language utilizando este formato. Ejemplos: it, de-at, es, pt-br. Los códigos de idioma se representan generalmente en minúsculas, pero la cabecera HTTP Accept-Language es insensible al caso. El separador es un guión.

archivo de mensajes

Un archivo de mensajes es un archivo de texto plano que representa un solo idioma y contiene todos los strings de traducción disponibles y cómo deben ser representados en el idioma dado. Los archivos de mensajes tienen una extensión de archivo .po.

cadena de traducción

Una literal que puede ser traducida.

archivo de formato

Un archivo de formato es un módulo Python que define los formatos de datos para una zona horaria determinada.