Crea traducciones con JSON

Por José Luis Garrido, el 26 de Octubre del 2016

En mi afán investigador he descubierto un sistema para traducir programas en Python utilizando JSON, el método es extensible a otros lenguajes y dependerá de como maneje los datos de JSON.

Para empezar un poco de teoría:
Python al hacer un parser de JSON convierte los datos en un diccionario y se utiliza como clave de cada elemento el identificador con el mismo nombre que el JSON. Este método permite una actualización de las traducciones más rápida que gettext y es algo más simple de implementar.

Primero necesitamos una base de datos JSON con los textos que tienen que salir por la pantalla, podemos hacer un mismo archivo con varios idiomas o varios archivos cada uno por un idioma.

Aquí el ejemplo de archivo JSON
 

{
    "es":{
        "Titles":{
            "First":"El procesador segmentado",
            "Subtitle":"Muestra de partes en el procesador segmentado",
            "Parts":["Búsqueda","Decodificacion","Ejecución","Memoria","Escritura"]
        }
    },
    "en":{
        "Titles":{
            "First":"The pipelined processor",
            "Subtitle":"Show the parts in the pipelined processor",
            "Parts":["Find","Decodification","Execution","Memory","Write"]
        }
    }
}

Lo más importante en este caso es que la estructura sea la misma si no tendremos problemas, mi recomendación es que las traducciones se hagan copiando una traducción correcta e ir sustituyendo cada parte, si los nombres de los identificadores no coincide el programa no funcionará.

Después de crear nuestros ficheros con las traducciones lo utilizamos en Python. Este es el código de ejemplo

#!/usr/bin/python3

import json

#Cargamos el json y lo guardamos en data que es un diccionario
with open('lang.json') as data_file:    
    data = json.load(data_file)
#Seleccionamos el idioma

lang = "es" #Este paso depende de la implementación

#Para acceder a data basta con usar el identificador en JSON
print(data[lang]["Titles"]["First"])
print(data[lang]["Titles"]["Subtitle"])
for x in data[lang]["Titles"]["Parts"]:
	print(x)

Paso a paso explicado sería.

  1. Importamos la librería json y cargamos el archivo
    import json
    
    with open('lang.json') as data_file:    
        data = json.load(data_file)​
  2. Tras esto cargamos el idioma, en este caso la carga es estática pero esto puede hacerse de muchas maneras, un fichero de configuración, la variable LANG del sistema etcétera.
    lang = "es" ​
  3. Por último utilizamos los datos como un diccionario, los arrays se acceden igual que si fueran nativos.
    print(data[lang]["Titles"]["First"])
    print(data[lang]["Titles"]["Subtitle"])
    for x in data[lang]["Titles"]["Parts"]:
    	print(x)
    ​

Como anotación si se quiere cargar un fichero distinto según el idioma (una opción más recomendable si son muchas cadenas) solo hace falta cargar el idioma antes y abrir el fichero según el idioma cargado. El funcionamiento es el mismo, solo que con diferentes archivos.

Por último algunas capturas

Con lang="es"


Con lang="en"

Espero que este método para traducir proyectos os sea útil y no olvidéis dejar vuestras sugerencias en los comentarios.

¿Te gustó el artículo? Dale like, opina, o comparte ;)

Artículos relacionados

Se necesita tener JavaScript habilitado para poder ver los comentarios de la web.
Dame tu voto en HispaBloggers!
Los +1 gustan ;)

Conoce nuestros otros proyectos personales fácilmente entrando en proyecto.jkanetwork.com



Aprender PHP+mysql fácil - Episodio...
[Info] Apk eliminables y no eliminables...
MIRAI NIKKI , sinopsis y...
[Review+Firm] Movil OCU por menos de...

Blogs recomendados


Preferimos usar medios alternativos a la publicidad para que nuestros servidores sigan en pié. Si tenéis dos minutos, nos alegraría que nos ayudaseis. Hay más formas aparte de sacar de vuestro bolsillo, y las agradecemos. Ayudanos

Coobis

¿Quieres decirnos algo? Mándanos tus ideas y sugerencias por e-mail, facebook, twitter. Estaremos encantados de oirlas :)