En el desarrollo de software , la internacionalización (abreviado como i18n , donde 18 representa el número de caracteres entre la i y la n en la palabra) es el establecimiento de un sistema que permite la regionalización del software, es decir, su adaptación a diferentes idiomas y culturas. Por tanto, el objetivo de la internacionalización es producir un único programa que pueda incluir varios idiomas para la interfaz .
La internacionalización es un requisito previo para la regionalización. Consiste en separar, en el código fuente de un programa, lo que es independiente del idioma y la cultura de lo que depende de él (generalmente, en archivos llamados tablas de traducción ).
Pero la internacionalización no solo requiere trabajar con mensajes de texto. A veces también es necesario permitir cambiar los códigos de color (cuyo significado puede variar según la cultura), los gráficos (incluidos los nombres de los iconos, ciertos iconos que pueden contener texto escrito a traducir), el formato de las fechas o números, la dirección de escritura (de derecha a izquierda en árabe , por ejemplo), el tamaño de los elementos gráficos (un texto en alemán suele ser más largo que su equivalente en inglés , que puede modificar un diseño, etc. ), hasta que la forma de otorgar palabras en plural después de un número (escribiremos "0 task fille" en francés, pero "0 child s process es " en inglés).
La internacionalización es, por tanto, el conjunto de mecanismos técnicos que conducen a un resultado lingüísticamente aceptable en el idioma que ha elegido el usuario final. Sin embargo, puede que no sea suficiente para manejar "cualquier idioma", porque el programa usa un conjunto de caracteres limitado, o algunas fuentes específicas, o porque el usuario no tiene los teclados adecuados para ingresar datos en un idioma en particular.
Puede ser necesario migrar o considerar un conjunto de caracteres más amplio para lograr la internacionalización universal. Los conjuntos extendidos se ofrecen, por un lado en la familia ISO-2022 , y por otro lado en forma Unicode , en particular UTF-8 / UTF-16 . Este paso, más o menos independiente de la internacionalización (se puede realizar al mismo tiempo, antes o después) se denomina “multilingüización”.
Los términos a menudo se escriben en su abreviatura i18n , un nombre inventado por Digital Equipment Corporation en los años setenta y ochenta y l10n para la palabra inglesa localización ( regionalización en francés).
Algunas empresas, como IBM y Sun Microsystems , utilizan el término globalización para definir la combinación de internacionalización y regionalización.
Microsoft define la internacionalización como una combinación de la expresión inglesa "World-Readiness" y regionalización. La preparación para el mundo es una tarea que incumbe al desarrollador y que hace posible utilizar un producto con muchos caracteres de escritura y muchas culturas (globalización) mientras se separan los recursos internacionalizables de la interfaz de usuario en un formato regionalizable ( localizabilidad , abreviado como l12y ) .
Este concepto también se conoce con el nombre de “NLS” ( Soporte de idioma nacional o Soporte de idioma nativo que significa soporte para idiomas nacionales o soporte para lenguas maternas en francés).
El programa C así escrito no está internacionalizado:
printf("Fatal error: %s\n", msg);Para traducir el mensaje, sería necesario editar el código fuente y modificar la cadena de caracteres.
Por otro lado, la siguiente versión del mismo programa se internacionaliza gracias a la biblioteca gettext . El programa buscará en sus archivos de localización una cadena de caracteres correspondiente a "Error fatal:% s", para el idioma del usuario actual:
printf(gettext("Fatal error: %s\n"), gettext(msg));Los mensajes gettext regionalizados están asociados con la versión predeterminada del mensaje que sirve como clave . Otros entornos de programación pueden usar, por ejemplo, un número (lo que hizo Mac OS ), o depender de una configuración dinámica (por ejemplo, el método I18n.translatede una aplicación Ruby On Rails ).
Los esfuerzos de internacionalización y regionalización deben tener en cuenta las siguientes características:
La distinción entre internacionalización y regionalización es sutil pero importante. La internacionalización es la adaptación de productos que se pueden utilizar "potencialmente" en casi todas partes, mientras que la regionalización es la adición de valores específicos destinados a determinados parámetros regionales . La internacionalización se realiza una vez en cada producto, mientras que la regionalización se realiza para cada una de las adaptaciones de ese producto a la configuración regional. Los procesos se complementan entre sí y deben combinarse para lograr el objetivo de un sistema que funcione a nivel internacional. Las áreas específicas de regionalización incluyen las siguientes características:
Para internacionalizar un producto es necesario consultar, para cada uno de los mercados en los que se registra el producto, los detalles como:
Estos son solo ejemplos de cómo hacer de la internacionalización un proyecto complejo.
Un enfoque más amplio tiene en cuenta factores culturales relacionados, por ejemplo, con la adaptación de la lógica del proceso empresarial o la inclusión de aspectos individuales y culturales (conductuales).
La práctica actual es para aplicaciones que permiten colocar texto en cadenas de recursos, cargar durante la ejecución del programa y según sea necesario. Estas cadenas, almacenadas en archivos de recursos, son relativamente fáciles de convertir. Los programas se crean a menudo para hacer referencia a bibliotecas de recursos que dependen de los datos de la configuración regional que se han seleccionado. Esto es posible gracias a bibliotecas de software como gettext .
Así, para obtener una aplicación que admita múltiples idiomas, sería recomendable diseñar la aplicación que permitiera seleccionar en tiempo de ejecución el archivo de recursos del idioma correspondiente. Los archivos de recursos se convierten a los idiomas necesarios. Este método tiende a volverse específico de la aplicación o incluso del proveedor. El código necesario para manejar la verificación de entrada y muchos otros tipos de datos confidenciales locales también deben ser compatibles con diferentes requisitos regionales. Los sistemas operativos y de desarrollo modernos incluyen bibliotecas sofisticadas que brindan soporte internacional para este tipo de datos.
Si bien la traducción de textos existentes a otros idiomas puede parecer fácil, es más difícil mantener versiones paralelas de textos a lo largo del ciclo de vida del producto. Por ejemplo, si se cambia un mensaje que se muestra al usuario, también deberán cambiarse todas las versiones traducidas. Posteriormente, esto da como resultado un ciclo de desarrollo algo más largo.
Muchos problemas de regionalización (como la dirección de la escritura, la clasificación del texto, etc.) requieren una modificación más profunda que la simple traducción del texto. Por ejemplo, OpenOffice.org logra esto a través de conmutadores de compilación.
Hasta cierto punto (por ejemplo, para garantizar la calidad ), el equipo de desarrollo necesita a alguien que comprenda idiomas y culturas extranjeras y tenga experiencia técnica. En países grandes donde solo existe una lengua o cultura dominante, probablemente sea difícil encontrar una persona así.
Uno de los ejemplos de problemas conocidos con la regionalización es el intento de Microsoft de mantener algunos atajos de teclado significativos para los idiomas locales. En algunos programas de la versión de habla italiana de Microsoft Office , la tecla "CTRL + U" ( guión bajo ) terminó siendo reemplazada por "CTRL + S" ("sottolineato"), en lugar de la función (casi) universal "Guardar" .
En un contexto empresarial, la ventaja de la internacionalización es el acceso a nuevos mercados. Sin embargo, esto implica costos considerables, que van mucho más allá de la simple ingeniería. En primer lugar, el programa suele necesitar una revisión para poder comercializarlo a nivel mundial.
Entonces, proporcionar una traducción en un idioma determinado no se considera un proyecto trivial. Esto implica la intervención de redactores técnicos especializados que construyen una sintaxis adaptada a la cultura, especialmente en el caso de conceptos complejos, asociados a recursos de ingeniería para desarrollar y probar los elementos de regionalización. Además, las operaciones comerciales deben adaptarse para gestionar la producción, el almacenamiento y la distribución de los muchos y diferentes productos regionalizados, a menudo vendidos a diferentes precios en diferentes monedas, en diferentes entornos regulatorios y sujetos a diferentes regímenes fiscales.
Finalmente, las ventas, el marketing y el soporte técnico también deben facilitar sus operaciones en los nuevos idiomas para ayudar a los consumidores a elegir sus productos regionalizados. Pero cuando se trata de personas que hablan un idioma muy poco utilizado, nunca se debe esperar que los productos regionalizados sean rentables. Incluso si las poblaciones que hablan un idioma generalizado exigen que se traduzca un producto determinado, y el producto ya está internacionalizado, el desarrollador o editor de software en cuestión seguramente carecerá del espacio o los conocimientos para gestionar las funciones adicionales relacionadas con el software. lenguajes severos. Por ejemplo, Microsoft Windows 7 tiene un paquete disponible en 96 idiomas.
Una alternativa, a menudo utilizada por las comunidades de software libre , es la regionalización participativa por equipos de voluntarios. El proyecto K Desktop Environment 3, por ejemplo, se ha traducido a más de 100 idiomas, y el proyecto KDE Software Compilation 4 está disponible en 68 idiomas. Sin embargo, la regionalización participativa requiere que el producto subyacente se diseñe primero para financiar tales actividades, lo cual es un esfuerzo significativo.