Logotipo de Orbis Sapientia Elearning Services

Servicios de formación. Especialistas en E-learning.

Internacionalización y localización

Internacionalización, localización, globalización y localizabilidad

Internacionalización, localización, globalización, localizabilidad

Internacionalización y otros términos similares llevan en el mundo del desarrollo de software ya algún tiempo. No son ninguna novedad. Sin embargo, parece que muchos desarrolladores no conocen aún estos términos y las implicaciones que tienen o bien confunden los términos.

Una de estas confusiones vienen dadas por las abreviaturas que se han convertido en estándares de facto para cada uno de los términos:

  • Internacionalización: i18n
  • Localización: I10n
  • Globalización: g11n
  • Localizabilidad: I12y

Los acrónimos alfanuméricos hacen referencia a los caracteres por los que comienzan y finalizan esos términos (aunque no con exactitud) más la cantidad de caracteres que existen entre ellos.

Hoy en día, la mayoría de aplicaciones desarrolladas son aplicaciones web, de móviles y juegos cuyo objetivo está a nivel mundial. No hace falta decir que tener claros estos principios es hoy día imprescindible. Debemos tener muy claro cómo hacer que nuestras aplicaciones, sean del tipo que sean, se encuentren disponibles para cualquier país. Ah, y ojo, no necesariamente con diferentes idiomas. Tal vez nuestra aplicación está orientada exclusivamente a un público que habla español: ¿de España?, ¿de México?, ¿de Perú?… ¿De Estados Unidos? ¿Qué ocurre por ejemplo con la moneda?

Veamos pues qué es cada término.

Internacionalización o i18n

Internacionalizar es preparar un producto software (aplicación, documento, etc.) para que pueda adaptarse con facilidad a las características de cualquier región, cultura, país, etc. Esta acción se da principalmente en la fase de diseño del producto software. Puede ir, desde utilizar tipos de monedas diferentes, formatos numéricos distintos, lenguajes, hasta procesos de negocio claramente diferenciados.

Lógicamente, es más fácil preparar desde el principio un producto software para que sea internacionalizable que adaptar uno existente que aún no lo es. Por tanto, es mejor hacer esto desde un principio aunque en ese momento, no tengamos en mente darle esa característica. A largo plazo pueden aparecer requerimientos que hagan necesaria la internacionalización del producto.

Esta característica cubre normalmente los siguientes puntos:

  • Usar Unicode ® en el código de caracteres (código fuente, base de datos, etc.) o derivado como UTF-8. De esta forma, no tendremos problemas con caracteres acentuados, especiales (como los de diferentes alfabetos), etc.
  • Habilitar, mediante el uso de diferentes medios (HTML, CSS, etc.), la posibilidad de texto bidireccional, vertical y otros.
  • Dotar al código de lo necesario para controlar preferencias locales, regionales, lingüísticas o culturales como formatos de fecha y hora, calendarios, formatos y sistemas numéricos, ordenamiento, tratamientos, etcétera.
  • Separar los recursos internacionalizables, distinguiendo asimismo aquellos procesos susceptibles de serlo.
  • Contemplar la posibilidad de uso de diferentes idiomas.
  • Tener en cuenta el uso de zonas horarias, formatos de fecha y hora diferentes, calendarios distintos y otros.
  • Pensar en el posible uso de diferentes sistemas y formatos numéricos: separador de decimales, miles, términos, etc.
  • Por supuesto, la posibilidad de usar diferentes sistemas monetarios, impositivos y otros.
  • Pesos, medidas y diferentes unidades internacionalizables.

Desde luego que podríamos seguir. He aquí unos recursos adicionales sobre internacionalización:

Localización o I10n

Una vez realizada la internacionalización o fase de diseño que cubre ese grupo de características del producto, damos paso a la localización de éste. Siguiendo lo diseñado en la internacionalización, adaptamos los recursos para que se adapten a la cultura, lengua, etc., de la región, país y demás que actuarán como destinos del producto para venderse y, en definitiva, utilizarse. Todo esto implica adaptar los idiomas, formatos y otros similares.

Hoy en día, muchas herramientas conocidas se encuentran localizadas. De entre ellas destaca Liferay Portal que permite localizar prácticamente cualquier cadena. En la siguiente entrada del blog, se indica cómo hacerlo para las urls amigables y títulos de las páginas pero es aplicable a cualquier cadena donde nos encontremos este sistema (etiquetas de campos de estructuras, nombres de plantillas y estructuras, etc.): https://obelearningservices.com/liferay-7-localizar-paginas/

Globalización o g11n

Básicamente, la globalización es llamar de forma conjunta a la internacionalización y la localización. Cualquier producto que use ambos procesos, usa globalización. Es un término que usan empresas como Microsoft ®, IBM ® y otros. En realidad, dependiendo de la empresa, el concepto de globalización puede variar un poco.

Por si fuera poco la jungla de términos a los que nos enfrentamos los desarrolladores, hay otro término: Translation (traducción) que sería el proceso de traducir cada cadena (formaría parte de la localización). Su abreviatura sería T9n. Como normalmente se aplica a más áreas, no solamente al desarrollo, lo menciono pero no insisto mucho con él.

Jeje, no he acabado. El uso de la globalización, internacionalización, localización y traducción recibe el acrónimo de GILT. Sufridos desarrolladores…

Localizabilidad o I12y

La localizabilidad es la característica que encontramos en un producto localizable (al que podemos añadir localización). Podemos por tanto decir que la localización es la acción de modificar el producto que hemos visto más arriba y la localizabilidad es la posibilidad que tiene un producto de poder implantar la localización.

Ejemplos en algunas herramientas y lenguajes

Java, PHP, Python, C++, Liferay, Drupal, WordPress, Joomla, etc., son lenguajes y herramientas preparados para ofrecer internacionalización (o globalización si queremos llamarlo así).

Java

El lenguaje Java viene preparado para soportar Unicode y UTF-8, siendo muy fácil crear cualquier código Unicode mediante los caracteres de escape “\u” más el código necesario. Aparte, disponemos de las clases Charset , ResourceBundle y Locale . Aquí puedes profundizar un poco más:

PHP

En PHP no disponemos de la capacidad de trabajo con Unicode de la que hace gala Java pero si que tenemos diferentes formas de aplicar internacionalización a nuestros productos. Independientemente de las diferentes formas con que podemos abordar este proceso, si que disponemos de una serie de extensiones, clases y funciones que nos proveen de soporte para lenguaje humano y codificación de caracteres:

Se desaconseja por completo el uso de las funciones utf8_de(en)code().

PYTHON

Con Python (3.x) disponemos en la base del módulo GNU gettext para dotar de internacionalización. Desde luego, disponemos de más posibilidades. Las que voy a llamar “oficiales”, las podemos ver aquí: https://docs.python.org/3/library/i18n.html .

La localización por ejemplo, se basa en el módulo locale .

El soporte de Unicode no reviste ningún problema: https://docs.python.org/3/howto/unicode.html .

C++

C++ está sujeto a diferentes versiones dependiendo de quién esté detrás del compilador que se use. Sin embargo, el lenguaje C++ estándar dispone de una serie de componentes (clases llamadas facetas) que permiten su internacionalización, englobados en un superconjunto llamado locale específico de C++. Todos ellos están basados en la clásica librería locale.h de C.

Del mismo modo podemos hacer uso de GNU gettext . Es bastante conocida también la librería ICU .

Liferay

La globalización con Liferay 7 (o 6.x) es precisamente uno de sus fuertes. Este artículo oficial de Liferay trata sobre ello: https://dev.liferay.com/es/develop/tutorials/-/knowledge_base/7-0/internationalization .

En este blog toco bastante de Liferay y en este mismo artículo ya he mencionado la funcionalidad de localización sobre prácticamente cualquier cadena.

Drupal

Depende de la versión utilizada; mientras que en la versión 7 disponemos de módulos que ayudan con todo esto, en la 8, contamos en su API con language.api.php.

Activando los módulos Language, Interface Translation y Configuration Translation añadimos funcionalidades al respecto.

Existe un proyecto sobre Drupal 8 multilingüe: http://www.drupal8multilingual.org/ .

Finalmente decir que se trata de un framework basado en PHP por lo que podemos aplicar lo visto para este lenguaje.

WordPress

Esta herramienta es un CMS desarrollado en PHP por lo que podemos aplicar lo mismo que para el punto ya visto (haciendo un uso masivo de GNU gettext). De todas formas en este artículo podemos observar más información concreta sobre internacionalización con WordPress: https://codex.wordpress.org/I18n_for_WordPress_Developers .

Indicar que uno de los fuertes de WordPress es el uso de plugins y desde luego existen muchos plugins para Wordpress que trabajan sobre este tema.

Joomla

Otra herramienta basada en PHP por lo que en principio; una vez más, aplicamos lo dicho para este lenguaje (como WordPress).

Del mismo modo, también contamos aquí con extensiones que facilitan la incorporación de la globalización.

En el momento de escribir este artículo, la versión de Joomla estable es la 3.x y existen dos recursos casi imprescindibles si queremos conocer más sobre internacionalización con Joomla:

Es este un tema que puede dar para mucho. Me daré por satisfecho si aclara las dudas sobre estos conceptos o permite introducirlos en este tema tan actual. Nada más, un saludo y hasta otra.

Deja un comentario

Contáctanos

Logotipo Orbis Sapientia E-Learning Services© 2017. Orbis Sapientia E-Learning Services – José Manuel Domínguez Romero. Todos los derechos reservados.

Últimas noticias y eventos

Archivos

Sobre nosotros

Avenida Castilla la Mancha, 31, Bajo 1
28702 San Sebastián de los Reyes
Madrid
PATROCINADORES
Solamente aceptamos patrocionadores cuyos servicios son de calidad contrastada
X