Professor Associat del DLSI

Professor Associat del DLSI

I18n, otro de mis terrores favoritos

I18n es la abreviatura de la palabra Internacionalization que es la técnica implementar/diseñar un sitio web para que pueda soportar diferentes configuraciones regionales (no solo el idioma, sino también formatos de fecha, cantidades monetarias, etc.). Existe un término similar: L10n (Localization) que consiste en adaptar un sitio web a una nueva configuración regional.

Este es junto con los problemas de juegos de carácteres y los campos fecha mi tercer ‘terror’ favorito a la hora de implementar programas o desarrollar sitios web. Y no, no es un tema trivial. Porque traducir un sitio web a otro idioma no solo requiere dominar ese otro idioma o tener a mano un traductor, pues muchas veces las traducciones se realizan sin contexto y fallan.

Mirad este caso:

wu-ingEste es un fragmento de un sitio web en ingles, donde entre otras cosas los usuarios suben fotos y en este mensaje hablan de que ya se han sudibo casi dos millones de fotos. Ahora mirad el mismo sitio en castellano:

wu-esp

No se trata de un error, ni es nada grave, hasta se entiende, pero desde mi punto de vista lo que ha ocurrido yo ya lo he vivido. Alguien le ha pasado al traductor un fichero con los literales (cadenas de texto) del sitio web. En el literal en inglés decia: ‘photos uploaded!‘, lo cual el traductor, haciendo su trabajo, escribió: ‘¡fotos cargadas¡‘, sin saber que la cadena original en ingles formaba parte de una frase en la que faltaba el numero. En estos casos, el traductor además de los textos a traducir necesita tener CONTEXTO, poder ver las pantallas ya sea junto con el programador o bien tenerlas capturadas en imágenes.

De hecho en esta misma captura podemos ver otros fallos que si que pueden llegar a la categoría de errores:

  • el texto del botón no está traducido, ¿porque? puede ser porque este texto no esta en los ficheros de textos a traducir o bien está en otro fichero o se genera desde otra capa y ésta está sin traducir.
  • el título de la foto tampoco está traducido. En este caso se debe de tratar de contenidos añadidos por los usuarios, y claro cada usuario habla su idioma. Esto se puede ver en otros sitios, por ejemplo, cuando ves un video en youtube, los comentarios del mismo pueden estar en cualquier idioma. ¿es un error de programación? pues depende, si estuviesemos hablando de una tienda online, los datos si que deberian internacionalizarse, pero si es otro tipo de web, no siempre hace falta.

Al internacionalizar una web se deben contemplar dos tipos de contenidos:

  • los contenidos estáticos o estructurales de la web: textos del interface.
  • los contenidos dinámicos, los valores textuales de los datos que la web gestiona. En este caso, o bien la base de datos se ha diseñado con técnicas de i18n desde el principio o ‘localizarla’, es decir, añadirle textos traducidos en otros idiomas, puede ser muy, muy costoso.

Otro tema es cuando el programador, con toda su buena voluntad usa un traductor automático. Esto lo pude ver hace años de un compañero de mi propio equipo de trabajo que tradujo el texto ‘¿Seguro que desea borrar este dato?‘ al valenciano en un traductor automático y puso el siguiente texto tal cual: ‘Assegurança que desitja esborrar aquest text?‘. El traductor tradujo la palabra ‘seguro‘ por el sustantivo ‘assegurança‘ sin pensar que era un adjetivo. Para los que no sepais valenciano, es como si ese texto lo tradujesemos al inglés con el siguiente resultado: ‘Insurance you want to delete this item?‘.

Hay infinidad de errores de este tipo en la web, algunos leves y otros bastante graves, que hablan del cuidado que han puesto en internacionalizar la web sus autores, o quizas del presupuesto que tenian :-O

La ‘nueva’ selva del desarrollador web…

Hace unos dias un amigo y compañero de trabajo me mando estos dos links:

https://circleci.com/blog/its-the-future/

https://hackernoon.com/how-it-feels-to-learn-javascript-in-2016-d3a717dd577f#.d7baby1h2

Son dos parodias de dialogos ficticios entre dos desarrolladores hablando de que
tecnología usar para realizar un desarrollo o aplicativo Web. Se hacen largas, pero te dan una idea de como esta la industria del desarrollo web.

Me siento bastante identificado, porque ultimamente han surgido multitud de tecnologías de desarrollo web, algunas son muy buenas ideas, algunas rompen con la forma actual de hacer las cosas, pero otras son ‘raras’, reinventan la rueda o se pasan de rosca.

La mayoria son inestables, de forma que de una versión a otra, suelen cambiar tanto que la compatibilidad hacia atras brilla por su ausencia. Y no se aclaran en decidir que es una clase, un modelo, una ijection, un include o lo que sea…

Algunas vienen esponsorizadas por grandes empresas: la API de los programadores de Facebook, la que usa Google en la intimdad, la preferida de Tweeter, etc.

Muchas de ellas se basan en frameworks o tecnologías que ya existian añadiendo una capa intermedia con la idea de hacer el interfaz más amigable, pero que suelen resultar en un más de lo mismo…pero con una capa en medio.

Otras tantas suponen meter un include de varias decenas (o más) de kbs para acabar usando una funcioncita o dos…matar mosquitos a cañonazos?

La tendencia actual, al parecer es volver a las consolas, el interfaz de comandos, ahora lo que ‘mola’ es instalar cosas a golpe de instrucción desde un prompt, hasta tal punto que he visto como algunos se han instalado en su Windows o Apple un SW que emula una consola de Unix, que permite instalar paquetes ‘Unix-style’ y desde esta ventanita en modo texto sobre un flamante escrtorio gráfico de última generación, lanza comandos al estilo ‘hacker’ para instalar ‘packages’, ‘dependencies’, etc. Raro?

Y lo que me parece más duro, algunas implican usar un dialecto de Javascript que debe ser interpretado o compilado en Javascript ‘de toda la vida’, en cada ejecución o prueba… buf!

Sea como sea, me pierdo entre tanta novedad, nombrecitos, siglas, acrónimos, versiones y dependencias, npms, nodes.js, angular 2.0, RESTful APIs, moment.js, Cygwins, Typescript, JSX y tal.

Bueno, la cosa es adaptarse, y esperar cual de estos nuevos paradigmas se estabiliza, se hace ‘potable’ y se convierte en referencia. Mientras tanto, cada vez que me toca comenzar un nuevo proyecto, tiemblo de pensar que lo que hice anteriormente dificilmente va a ser reutilizable si me cambian la tecnología o la versión…:-(

Mobile First?

Una nueva tendencia, empapada de trenditis la llamada ‘Mobile First’ ha surgido a partir del libro homónimo de Luke Wroblewski.

En la introducción dicen de él que ‘Luke Wroblewski knows more about mobile experience than the rest of us’, lo cual no pongo en duda, aunque dicho así, me parece un tanto intimidatorio.

IMAG0217Pues bien, esta idea habla de anteponer las características (limitaciones?) de dispositivos móviles (smartphones, tablets, etc.) a las pantallas de PCs (monitores grandes) a la hora de diseñar las webs y, lo que es más agresivo, de redactar los  contenidos. Se basa en pensar primero en las pantallas pequeñas a la hora de diseñar sitios webs para luego ir ampliando la superficie disponible y ubicando contenidos adicionales en lugar de como tradicionalmente se ha venido haciendo, es decir, pensar en pantallas de ordenador de sobremesa y luego hacer una versión para tablets y móviles.

Mobile First se fundamenta en la idea de que en el futuro los PCs habrán desaparecido de los hogares y todo el mundo navegará desde una tablet o teléfono. Lo cual, para el mercado doméstico, no esta mal encaminado, pero ¿que hay de los PCs en las oficinas y demás puestos de trabajo, en las aulas, etc.? ¿También vamos a desterrar de allí los ordenadores? No lo creo. No creo en absoluto que los PCs desaparezcan, aunque si perderan cuota de mercado como dispositivo preferido para navegar por Internet, en favor de tablets y demás, sobre todo en el ámbito doméstico.

smart tv screenOtro dispositivo que esta emergiendo y que puede competir con el PC doméstico son las smart TVs, las cuales son prácticamente un ordenador dentro de una pantalla de televisión cuyo tamaño oscila entre las 30 y 100 pulgadas. ¿Como se verá una web Mobile First en semejante superficie?

Por otro lado, tomar esta idea al pie de la letra o con ‘tendencitis’ puede producir un efecto en las webs consistente en:

  • Vaciado de contenidos, desperdiciando superficie de pantalla.
  • Aumento de tamaño de los objetos de navegación: enlaces, botones, campos de formulario, etc.
  • Aumento de tamaño de textos.
  • Reducción de tamaño de imágenes.
  • Uniformización de elementos decorativos (colores, modelo de cajas, iconografía) al utilizar Frameworks de CSS ‘de moda’.

Si navegais un poco podreis notar estos efectos… los cuales vistos desde mi flamante monitor de PC de 21″, me hace tener la sensación de estar navegando desde un gigantesco móvil, sin pensar que con un monitor actual caben muchas más cosas…

Quizas se debería de pensar primero cual es el publico objetivo de una página web antes de diseñarla ‘Mobile first’ o ‘Videowall First’. 🙂

video-wall

Tecnologías de tendencia: JQuery, Bootstrap

Por todos es conocida la ‘mania’ de los informáticos a usar siempre las últimas versiones de software, de todo el software que usan. Algo que podriamos bautizar como ‘tendencitis’ o si equivalente en inglés: ‘trendytis’.

Es peligroso, y por eso yo siempre recomiendo a mis alumnos que antes de instalarse un nuevo software (cualquiera que sea, desde un procesador de textos, un navegador o un entorno de desarrollo o un servidor web) busquen la penúltima (QUE NO ÚLTIMA) version de las llamadas ‘estables’. Claro está, siempre que se quiera sacar partido a tal software, si la intención es probar o ver que tal és, entonces siempre sera mejor instalar la última versión.

En el mundo de los desarrolladores, y más concretamente en el mundo de los desarrolladores de sitios web, la ‘trendytis’ es más aguda, hasta tal punto que llega a influir en el desarrollo del proyecto, en la implementación en si.
Un ejemplo: en el departamento de desarrollo de aplicaciones donde trabaja un buen amigo mio, hace unos pocos años se decidió que MooTools era el mejor framework de Javascript posible y a todos nos empujaron a usarlo para todo, llegandose a invertir dinero y tiempo en formación, sin embargo, a día de hoy ya casi nadie se acuerda de MooTools, todos hablan de JQuery, se ha abandonado ese framework y con ello todos los proyectos que se desarrollaron con el ahora tienen una dificultad adicional en su mantenimiento, !usan otro framework! usan MooTools, hay personas que no lo conocen (porque han llegado a trabajar en la ‘era JQuery’ y no pueden mantenerlo ) y por supuesto, actualizar esos proyectos es de un coste elevado…

Siguiendo en el mundo del desarrollo de sitios web, con CSS está ocurriendo lo mismo, hace ya unos cuantos meses que la web tiene un tufillo constante a ‘bootstrap’, se está como uniformizando, todo CSS que no lleve bootstrap es obsoleto, ineficiente, de baja productividad… ¡ojo! no estoy diciendo que MooTools, JQuery o Bootstrap sean malos, al contrario son frameworks potentes, completos y muy útiles, lo que en realidad estoy criticando es que se usan de forma compulsiva e incluso a veces cuando ni siquiera hace falta… ¿que necesidad hay de incluir 100 kbs de código JQuery para emitir un simple mensaje? ¿o para seleccionar algo en una página? ¿que hay de malo en usar la función alert o getElementById a secas? trendytis…

Para terminar, y de paso dejar el post abierto a una segunda parte, quisiera mencionar otra peligrosa tendencia que esta apareciendo en la web, de la que bootstrap es responsable, pero solo en parte. Se llama ‘Mobile First’, tendencia a anteponer el diseño de un sitio web pensando en pantallas de tablets y smartphones antes que en monitores de PCs de sobremesa o portátiles…