en minube Asia

minube rumbo al sol naciente

Hace casi 9 meses en minube nos embarcamos en la aventura de expander nuestra plataforma al mercado Asiático, un poco inconscientes pero con mucha ilusión.

Y digo inconscientes no porque hubiese sido mejor no hacerlo, todo lo contrario, sino porque en aquel momento éramos totalmente inconscientes de lo que eso iba a suponer a nivel técnico, y el impacto que iba a tener en nuestro código y en nuestra forma de trabajar.

Os voy a contar lo que ha supuesto para nosotros, a nivel de desarrollo, este nuevo lanzamiento:

El primer problema que nos encontramos, el más evidente de todos, era cómo lidiar con nuestra enorme base de datos de ciudades (unas 200.000) y países. En nuestra anterior expansión internacional (Italia, Portugal y Alemania) nos encontramos con el mismo problema, aunque en miniatura. Donde los españoles llamamos “Londres” a la capital británica, un alemán la llama “Londen”  y un italiano “Londra”. Con los idiomas asiáticos, por supuesto, ocurre lo mismo, pero con el problema añadido de la grafía. Al final, para Alemania podíamos traducir exclusivamente las pocas decenas ciudades con nombre localizado, pero Madrid seguiría siendo Madrid.  Mientras que para Asia nos tuvimos que enfrentar al titánico trabajo de localizar y cambiar grafía a un total de más de 300.000 ciudades, unas 20.000 zonas y unos cuantos cientos de países.

Además de la traducción de toda la web y base de datos, hubieron muchos más contratiempos técnicos. Uno de los más significativos fue el de la codificación de caracteres. A pesar de que somos muy previsores y desde el inicio del proyecto todos los textos se almacenaban formateados en UTF-8, y éste soportar grafía japonesa y china, nos dimos cuenta que la manipulación de cadenas multibyte era algo con lo que no habíamos contado.
Los caracteres e ideogramas asiáticos no caben en un byte, por lo que UTF-8 utiliza entre 2 y 3 bytes para poder representarlos. Esto entra en conflicto con las funciones de manipulación de Strings, que deben tener en cuenta las cadenas de tipo multibyte para no “romperlas”. Adaptar nuestro proyecto al manejo de este tipo de Strings nos supuso repasarnos y modificar las llamadas de unos  1500 archivos.

Por temas de SEO, quisimos construir todas las urls evitando usar caracteres no-románicos. Basicamente, ninguno que no estuviese en los estándares. Para nuestras páginas de destino esto era un gran reto, ya que las urls se deberían construir con nombres romanizados a pesar de tener que mostrar la correcta grafía y traducción. La decisión final fue seguir guardando los nombres originales de destinos junto a su nombre “traducido”, para poder usar uno u otro según convenga. Esto también supuso el repaso y modificación de todo lugar en la web donde se mostrase el nombre de algún destino… os podéis imaginar lo que significa eso…

Para la generación de urls automáticas basadas en textos introducidos por usuarios (nombres de rincones, perfiles de usuario,…), también quisimos mantener la misma política, pero esto era aún más interesante, ya que el control que podríamos tener sobre el texto que se introduciría era nulo.
Para solucionar este problema optamos por crear algún script para “romanizar” los textos orientales. Después de una semana de estudio intensivo sobre grafía y romanización del Chino y Japonés, creamos sendos scripts “Romanizadores” que transliteraban el Chino al PinYin y el Japonés al Romaji (tanto si el texto introducido es Kanjihiragana o katakana)

Uno de los problemas más gordos, pero más interesantes de solucionar, fué el análisis morfológico de los textos. ¿Para qué? os preguntaréis muchos…
Una de las características tanto del chino como del japonés, es la  ausencia de espacios para delimitar las palabras (laescrituraseriaalgocomoestosinningúntipodedelimiadores :P). Si un lector chino/japonés ve un texto, y conoce las palabras, es capaz de indentificarlas, pero para una máquina, la ausencia de delimitadores hace que todo parezca un mismo String. En minube extraemos “tags” y “keywords” de los textos para luego poder lanzar busquedas sobre estas, por lo que para nosotros era imprescindible poder tener delimitadas las palabras.
Después de mucho buscar y leer, dimos con un magnífico proyecto open source llamado mecab,  un analizador morfológico de japonés escrito en C. Después de instalarlo como servicio en nuestras máquinas, pudimos empezar a lanzar llamadas de consola que nos devuelven los textos japoneses con sus palabras bien delimitadas 😀 !!!

Por supuesto, todos estos contratiempos (y otros más…) eran sólo añadidos a las demás tareas unidas al lanzamiento de una nueva versión localizada (repositorio, archivos de configuración, integración de herramientas paralelas, replicación de scripts de cron, etc…)

A pesar de todo esto, que no ha hecho más que hacernos crecer como proyecto y como profesionales, como si fuese un pequeño parto de gemelos, 9 meses de trabajo después, “minube Asia” ya es una realidad.
Por mi parte me encantaría dar las gracias a Raúl por asignarme la responsabilidad de este increíble proyecto, a David Esteban, nuestro nuevo Asian Country Manager, por su incansable ilusión y trabajo, y al resto de mis compañeros desarrolladores por el soporte (en especial a Ivan por su gran apoyo y ayuda con algunas tareas). El proceso ha sido tan grande y complejo que, pensandolo bien, el 100% del equipo de desarrollo ha tenido que participar en algún momento.

Aunque espero que esto de lanzar versiones con distinta grafía no se convierta en una norma … espero que no sea la última versión internacional de minube.

Escribe un comentario

Comentario

  1. Gracias por compartir esto. Soy un eterno aspirante a programador con aplicación a programas web, por lo tanto esta nota me ilustra mucho de lo que he venido viendo en estos años.

  2. La palabra que mejor definiría lo que habéis hecho sería… ¡¡wow!!
    Me está entrando vértigo sólo de pensar en todos esos cambios.

    ¡¡Muchas gracias por compartir toda ésta información con nosotros!!

  3. La palabra que mejor definiría lo que habéis hecho sería… ¡¡wow!!
    Me está entrando vértigo sólo de pensar en todos esos cambios.

    ¡¡Muchas gracias por compartir toda ésta información con nosotros!!

  4. Hola,
    ¿qué hace falta para ser de minube?
    Lo acabo de descubrir y estoy encantada.