Archivos diarios: 20/07/2017
Manejo de Idiomas en Web con jquery.i18n.properties-1.0.9.js
Ahhh, los idiomas, un gracioso dolor de cabeza, después de tomar un desarrollo en el cual hacia todo por controllers, una mezcla de miedo, pero esta no es la razón del post, veremos una librería que medio algo de tranquilidad en la tempestad de esta travesía…
jquery.i18n.properties es una librería la cual permite el manejo de idioma con javascript y jquery si quieren ver el proyecto original pueden descargarlo de esta aquí.
En cuanto a mi, bueno como ya saben me gusta controlar algo las cosas que uso, así que me metí a echarle un ojo e hice un par de cambios y debo decir que no muy substanciales, manos a la obra, primero haremos un html con el siguiente código
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.2.1/jquery.min.js"></script> <script src="https://fcgexamples.000webhostapp.com/i18n/jquery.i18n.custom.js"></script> <input type="button" id="btEsp" value="Español"> <input type="button" id="btIng" value="English"> <fieldset> <legend lang="app.test.legend.title"></legend> <label lang="app.test.input.text.User.label"></label>:<input name="username" lang="app.test.input.text.User.placeholder" ><br> <label lang="app.test.input.text.Password.label"></label>:<input name="password" lang="app.test.input.text.Password.placeholder"><br> <input type="button" value="" lang="app.test.input.Button.label"><br> <span lang="app.test.Description.Text1"></span> </fieldset> <script> var lang = 'es'; $('#btEsp').on('click', function() { lang = 'es'; regionalData(); }); $('#btIng').on('click', function() { lang = 'en'; regionalData(); }); $(document).ready(function() { regionalData(); }); function regionalData() { $.i18n.properties({ name: 'messages', path: '/i18n/lng/', mode: 'both', language: lang, }); } </script>
Como podemos ver tenemos un atributo «lang» que nos servirá para definir las etiquetas que manejaran el idioma un ejemplo de esto es lang=»app.test.input.Button.label» a partir de esto usamos parte de la librería i18n, a la cual le he realizado algunos cambios, uno de ellos es que cambie el idioma de manera automática podemos ver el ejemplo funcionado aquí.
Los archivos archivos de idioma se encuentran en la carpeta lng y cuentan con la siguiente nomenclatura messages_{idioma}.txt en el caso de ingles sería messages_en.txt en el caso de español sería messages_es.txt
La información interna de los archivos contiene lo siguiente para messages_es.txt
app.test.input.text.User.placeholder=Usuario app.test.input.text.User.label=Usuario app.test.input.text.Password.placeholder=Contraseña app.test.input.text.Password.label=Contraseña app.test.input.Button.label=Enviar app.test.legend.title=Iniciar session app.test.Description.Text1=Este es un ejemplo de Formulario
La información interna de los archivos contiene lo siguiente para messages_en.txt
app.test.input.text.User.placeholder=User app.test.input.text.User.label=User Name app.test.input.text.Password.placeholder=Password app.test.input.text.Password.label=Password app.test.input.Button.label=Send app.test.legend.title=Login app.test.Description.Text1=This is a From Example