¿Alguna sugerencia de diseño?

Hola comunidad. Hasta ahora no había necesitado internacionalizar alguna aplicación.
Tengo algunos catálogos simples.

Por ejemplo:
 

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?

Opciones de visualización de comentarios

Seleccione la forma que prefiera para mostrar los comentarios y haga clic en «Guardar las opciones» para activar los cambios.
Imagen de arterzatij

que tipo de aplicacion tienes?

Puedes iniciar tomando lectura de esto :)

Imagen de paranoid_android

Es una aplicación Web

Es una aplicación web que podria publicarse en Español, Ingles y Portugues

Imagen de rodrigo salado anaya

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.

Imagen de paranoid_android

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

Imagen de benek

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:

Saludos!!

Yeap resourcesbundles y

Yeap resourcesbundles y archivos de mensajes son la mejor opcion.

Imagen de paranoid_android

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