Traduccion desde script
En esta modalidad las traducciones se introducen directamente en la rutina de Python. Esta manera no es la más habitual
Crear traducción
Las traducciones se pueden crear
adentro de la rutina de Python
con la función add_tranlation()
en forma de pares campo - valor, ambos en formato string-
Por ejemplo, para crear un campo llamado hi
y asignarle una traducción al español se hace:
Para cada par campo-valor
se puede asignar una abreviación de lenguaje
con ayuda del campo locale
,
de modo de permitir soporte simultáneo a múltiples idiomas:
i18n.add_translation('hi','good morning', locale='en') # 'en' : inglés (english)
i18n.add_translation('hi','buenos días', locale='es') # 'es' : español
Las etiquetas es
y en
son etiquetas de idioma
definidas por el desarrollador.
Éstas no vienen predefinidas por el paquete,
aunque convencionalmente se usan las abreviaciones en inglés de los lenguajes.
Elegir lenguajes - Set y Fallback
El lenguaje prioritario se establece
con la función set()
:
fallback()
:
Esto permite completar los campos para los cuales no existan traducciones en el lenguaje preestablecido. Como alternativa habitualmente se elige el inglés.
Leer traducción
La lectura de las traducciones se realizan con la función t()
:
donde la traducción elegida para el campo
será la asignada al lenguaje predeterminado (set
)
o el de respaldo (fallback
).
Si no hay ninguna traducción preasiganada para el campo
entonces se devuelve el mismo campo como texto.
Placeholders
Se pueden implementar parámetros (campos variables) dentro de las traducciones. Éstos son llamados placeholders o marcadores:
Los parámetros variables se asignan como argumento para la función t()
en el momento de traducir:
Pluralización
El placeholder, si éste tiene valor numérico, puede usarse para elegir entre varias traducciones posibles.
El valor numérico se pasa con la propiedad count
. Las opciones de traducción se enmarcan entre llaves y hay cuatro opciones:
Opcion | Valor |
---|---|
zero |
0 |
one |
1 |
few |
2 a 5 |
many |
6 o mayor |
Las traducciones para este caso se guardan como un diccionario, donde estas opciones son las claves.
Por ejemplo, supóngase un cliente de correos electrónicos:
i18n.add_translation('mails', {
'zero': 'No tienes ningún correo nuevo.',
'one': 'Tienes un nuevo correo.',
'few': 'Sólo tienes %{count} correos nuevos.',
'many': 'Tienes %{count} correos nuevos.'
})
count
:
Entonces las traducciones se adaptan al número ingresado: