Salta al contingut principal

Multi-idioma en Javascript

Este es mi primer aporte a la comunidad de Cristalab. Aquí veremos cómo lograr tener en varios idiomas una webapp usando Javascript.



Veamos primero el código:

Código :



var userLang = (navigator.language) ? navigator.language : navigator.userLanguage;

String.prototype.printf = function() {
var formatted = this;
for(i=0;i<arguments.length;i++) {
formatted = formatted.replace("%s", arguments[i]);
}
return formatted;
};

var Translation = {
userLang: 'es',
getLang: function() {
this.userLang = (navigator.language) ? navigator.language : navigator.userLanguage;
alert(this.userLang);
},
strTrans: {
'en': {'hola': 'hello',
'tu nombre es %s': 'you name is %s',
'tienes %s platano' : 'you have %s banana',
'tienes %s platanos' : 'you have %s bananas',
},
'ca': {'hola': 'hola',
'tu nombre es %s': 'el teu nom es %s',
'tienes %s platano' : 'tens %s platan',
'tienes %s platanos' : 'tens %s platans',
},
},
getText: function() {
var cadena = arguments[0];
if (typeof this.strTrans[this.userLang] !== "undefined") {
cadena = this.strTrans[this.userLang][cadena];
}
if(typeof cadena == "undefined") cadena = arguments[0];

total = arguments.length;
for(i=1;i<total;i++) {
valor = arguments[i];
cadena = cadena.replace("%s", arguments[i]);
}
return cadena;
}
}





Preparando las traducciones




Si observáis en la propiedad strTrans se definen los idiomas. En key:valor, key se refiere a la cadena a traducir y el valor a la cadena traducida.



Métodos





  • getLang: se obtiene el idioma por defecto del navegador, pero se puede definir el idioma que queremos con Translation.userLang = 'idioma';



  • getText(cadena,valor): le pasamos la cadena a traducir y el valor es opcional, si la cadena incluye %s pues lo sustituirá por el valor, pueden contener más de %s en una cadena, es decir multivalor.






Ejemplo de uso




Código :



Translation.getLang(); //obtenemos el idioma por defecto del navegador
Translation.userLang = 'en'; //definimos manualmente el idioma
document.write(Translation.getText('tu nombre es %s','Donkey-Kong'));
document.write('<br />');
document.write(Translation.getText('tienes %s platano',1));
document.write('<br />');
document.write(Translation.getText('tienes %s platanos',4));



Ver demostración en JsFiddle

Enviar comentario







via Cristalab http://www.cristalab.com/tutoriales/multi-idioma-en-javascript-c109613l/?utm_source=feedburner&utm_medium=feed&utm_campaign=Feed%253A+clab+%2528Cristalab%2529

Comentaris

Entrades populars d'aquest blog

15 Tutoriales CSS3 para mejorar tus paginas web

15 Tutoriales CSS3 para mejorar tus paginas web : Les dejo una pequeña recopilación de tutoriales CSS3 que espero sean de utilidad para ustedes, intentamos hacer una recopilación bastante completa para crear impresionantes diseños web con CSS3 y aprovechar las bondades de CSS3 incluso para aplicar efectos, son un total de 15 tutoriales CSS3 gratis . Crear menu dropdown con CSS3 Crear breadcrumbs con estilo Transiciones de paginas con CSS3 Crear timeline con CSS3 y jQuery Reproductor de video con HTML5, CSS3 y jQuery Crear efecto acordion CSS3 Aplicar degradado a texto Crear texto en curva con CSS3 y jQuery Aplicar textura a texto con Magic Pill Crear slider de imagenes con CSS3 y jQuery Rotar texto con CSS3 Crear menu vertical con CSS3 Crear formulario con HTML5 y CSS3 Crear efecto de imagenes apiladas con CSS3 Aplicar estilos para imagenes con CSS3  

Averiguar la Salud del Disco Duro, con Crystal Disk Info [Windows]

Averiguar la Salud del Disco Duro, con Crystal Disk Info [Windows] : El actual “cuello de botella” en nuestras PCs; es decir, donde todo el rendimiento de nuestra PC llega a estancarse , es en el Disco Duro. Si bien los procesadores han evolucionado considerablemente en velocidad / rendimiento, el RAM no sólo es más económico, sino más veloz, y las tarjetas de video siguen innovando con cada generación, los discos duros han permanecido idénticos desde hace años, limitados por la física. Y es que un disco duro tradicional sólo tiene un máximo de velocidad con el que puede girar (medido en revoluciones por minuto, o RPM) que, a su vez, limita la velocidad de lectura y escritura. En pocas palabras, a pesar de que nuestras PCs pueden procesar información mucho más rápido que hace 5 años, los discos duros siguen leyendo (y escribiendo) esta información prácticamente a la misma velocidad. Esto ha cambiado con la llegada de los SSD, los Discos de Estado Sólo que no están limitados por la velo...

Cómo programar add-ons en XBMC: Un add-on más completo

Este tutorial forma parte de la serie Cómo programar un add-on de XBMC Estamos a mitad de camino de este tutorial, pero ya tienes el conocimiento necesario para hacer un add-on bastante completo. Espero que a estas alturas ya te hayas convencido de que es algo relativamente sencillo sin necesidad de saber demasiado de programación. Y ya sabes cómo obtener datos de una página HTML usando expresiones regulares, que es lo más difícil. Así que antes de entrar en la recta final vamos construir un add-on paso a paso desde cero, con el objetivo de afianzar lo que has aprendido en las entregas anteriores y de paso divertirte un poco. Te aconsejo que elijas un sitio web que te guste como fuente de vídeos, para mí he elegido hacer un add-on completo que permita ver los vídeos de Disney Junior tanto en la web oficial como en YouTube. No se trata de un add-on demasiado complejo, como podrás comprobar enseguida, pero no va a desmerecer en nada a cualquiera de los que puedes encontrar publicados en...