¿Alguna sugerencia de diseño?
Hola comunidad. Hasta ahora no había necesitado internacionalizar alguna aplicación.
Tengo algunos catálogos simples.
Por ejemplo:
tabla 1: idiomas{
idIdioma: int llave_primaria;
idioma varchar2(10);
}
idIdioma: int llave_primaria;
idioma varchar2(10);
}
tabla 2: ocupaciones{
idOcupacion int llave_primaria;
ocupacion: varchar2(15);
}
Lo que primero se me ocurre es agregar el id idioma al catálogo, sin embargo esto podría cambiar las relaciones del diseño general.
Una segunda opción es usar la libreria i18n metiendo como llave el idioma español y de ahí traducirla a otros idiomas.
¿Alguna sugerencia?
- Inicie sesión o regístrese para enviar comentarios
que tipo de aplicacion tienes?
Puedes iniciar tomando lectura de esto :) http://docs.oracle.com/javase/tutorial/i18n/locale/index.html
Es una aplicación Web
Es una aplicación web que podria publicarse en Español, Ingles y Portugues
A mi no me gustaría que:
A mi no me gustaría que los catálogos se tomaran desde la base de datos, porque aun que para una persona puede significar p.e. un centenar de peticiones muy ligeras a la base, cuando este en producción se puede volver algún factor para re-diseñar esta parte es especifico, digamos que tu aplicación esta en 3 países diferentes y por cada país tienes unos 1000 usuarios y en un intervalo de 5 minutos entran otros 1000 y salen los que ya estaban y etc., se vuelve muy pesado a la larga.
Tal ves si solo esta destinado a 3 países no sea tan mala idea pegarle un JSON con los 3 idiomas/catálogos, claro dependerá mucho de la situación en partícula, pero si se carga ese JSON con los catálogos en el cache de explorador, pues alomejor eso lo vuelva un poco más ligero. Yo aria un JSON por cada pagina y no por la aplicación completa y pondría un idioma por default para evitar cosas muy raras.
Y si se pudiera saber de donde se pide primero la pagina y solo mandarle el JSON con el catalogó que le toca, eso estaría más bonito creo yo y no creo que sea muy complicado hacerlo.
Saludos.
Alternativas de Caché
Gracias por la observación.
En ese aspecto podría utilizar los siguientes mecanismos de Caché a ver que opinan.
1. Usando java scripts con la libreria i18n de jquery.
2. Usando una carga en memoria con algun mecanismo de refresh a la hora de actualizar el catálogo.
3. Usando resource bundles, sin embargo este paso implica una sincronización entre ingresar el dato al catálogo en base de datos y al momento de agregar las llaves al .properties
Gracias
Puedes hacerlo con archivos
Puedes hacerlo con archivos de propiedades (messages.properties) como es habitual, y en cada variante del properties (messages_es.properties, messages_en.properties y messages_pt.properties) estarían las claves con las traducciones.
Esto te servirá bastante: http://java.dzone.com/articles/step-step-guide
Saludos!!
Yeap resourcesbundles y
Yeap resourcesbundles y archivos de mensajes son la mejor opcion.
Internacionalizando
Para todas mis vistas agregaré resource bundles.
Ya sea en el back o en el front
http://code.google.com/p/jquery-i18n-properties/
Para mis catálogos buscaré las tablas ISO, lo mejor será que agregue la clave del país a cada catálogo y pase la llave del lenguaje.
Gracias Bnk y Oscar Rys