stringtranslate.com

Interfaz de usuario multilingüe

Comparación del menú Inicio de Windows 7 con el inglés seleccionado en la imagen de la izquierda y el japonés seleccionado en la derecha.

La interfaz de usuario multilingüe ( MUI ) permite la localización de la interfaz de usuario de una aplicación .

Microsoft proporciona MUI como una característica integrada de su sistema operativo Windows 11 hasta Windows 2000 con algunas limitaciones en versiones anteriores.

MUI se utiliza para localizar los productos estrella de Microsoft, Microsoft Windows y Microsoft Office , y, como tecnología abierta, se puede utilizar en cualquier aplicación que se ejecute en una versión de Windows que admita MUI.

La característica principal de MUI es la configuración del sistema definida por el usuario para el idioma preferido que pueden usar/compartir todas las aplicaciones de una computadora. La siguiente característica más importante son las funciones del sistema (es decir, LoadString) que usan esta preferencia para cargar recursos de la interfaz de usuario en tiempo de ejecución desde recursos en el idioma preferido del usuario. Para que MUI esté habilitado, una aplicación solo necesita almacenar recursos de la interfaz de usuario como recursos específicos del idioma y usar LoadString para cargarlos en tiempo de ejecución.

MUI también permite almacenar recursos de interfaz de usuario como archivos separados en un solo idioma, lo que brinda flexibilidad de desarrollo e implementación. Esta función es opcional. Los recursos se pueden almacenar en el binario de la aplicación.

MUI también proporciona funciones de sistema que permiten un comportamiento de localización personalizado y ampliado.

Descripción general

La tecnología MUI [1] está integrada en el sistema operativo Windows y se puede aprovechar en una aplicación almacenando activos localizables como recursos de una manera prescrita y utilizando funciones win32 habilitadas para MUI para leer los recursos.

Una implementación relativamente simple de MUI en una aplicación almacena las cadenas de cada idioma en un recurso de tabla de cadenas del archivo binario y utiliza la función win32 LoadString para cargar cadenas en tiempo de ejecución. No se requiere ninguna otra configuración o código relacionado con MUI. Se pueden implementar las siguientes capacidades opcionales de MUI si se desea:

El diseño de MUI intenta proporcionar una forma común de almacenar información de localización de aplicaciones que alivie las limitaciones de los diseños más tradicionales y monolíticos para la localización, como la inclusión de todos los idiomas en los archivos de lógica de la aplicación (es decir, los recursos). Con MUI, son posibles los siguientes escenarios de implementación:

Terminología

Los siguientes términos relacionados con MUI se utilizan en la documentación de Microsoft o se derivan de ella.

Neutral al lenguaje (LN): describe algo que transmite un significado independientemente del idioma del espectador, como una imagen sin texto u otros aspectos localizables.

Recurso LN: un recurso que se comparte y se instala para todas las versiones de idioma de la aplicación.

Archivo LN: binario de Windows que contiene la lógica de la aplicación y los recursos independientes del lenguaje.

Específico del idioma (LS): describe algo que tiene un significado significativamente diferente según el idioma del espectador. Los elementos LS más comunes son cadenas de interfaz, pero pueden ser otros elementos, como una imagen con texto.

Archivo de recursos LS: un conjunto de recursos localizados para un idioma; también conocido como archivo MUI

Preferencias de idioma

El sistema almacena una selección de idioma para el sistema (que comparten todos los usuarios y que puede utilizarse como predeterminada para un nuevo usuario) y para cada usuario. El usuario puede modificar estas selecciones a través del Panel de control del sistema, pero no pueden hacerlo las aplicaciones.

Estas preferencias controlan el idioma que el sistema operativo utiliza para los elementos de la interfaz de usuario. Las aplicaciones también pueden utilizar estas preferencias y, a través de las funciones del sistema habilitadas para MUI (como LoadString), el uso es automático y transparente (no requiere código específico de MUI para su uso). Pero el uso de estas preferencias es opcional y personalizable. Una aplicación puede diseñarse para que ignore las preferencias de idioma o puede utilizarlas de formas distintas a las proporcionadas por las funciones del sistema habilitadas para MUI.

Una aplicación puede utilizar funciones MUI [2] para leer las preferencias de idioma, que son predeterminadas según la selección del usuario [se supone] y son una lista de idiomas en orden de preferencia. Estas preferencias se proporcionan en los niveles de sistema, usuario, proceso e hilo [se supone que al cambiar en un nivel superior se modifican las preferencias de los niveles inferiores].

Una aplicación puede modificar estas listas de preferencias de idioma (a través de SetThreadPreferredUILanguages ​​y otras funciones) para influir en el comportamiento de MUI. Por ejemplo:

std::string languageIdSpec = "en-US";languageIdSpec.push_back('\0'); // debe terminar con doble nuloULONG recuento de idiomas = 1;si (!::SetThreadPreferredUILanguages(MUI_LANGUAGE_NAME, languageIdSpec.c_str(), &langCount))    throw std::runtime_error("No se puede establecer el idioma de interfaz de usuario preferido del hilo.");

Almacenamiento de recursos

MUI proporciona soporte para recursos localizados almacenados en archivos binarios de Windows (también conocidos como Win32 PE) (DLL, EXE, SYS), generalmente archivos DLL.

Los recursos de un idioma se pueden almacenar en el binario de la aplicación o en un archivo MUI (también conocido como LS), uno por idioma. Para que MUI encuentre recursos, un archivo MUI debe estar en el mismo directorio que su archivo LN asociado y tener el mismo nombre que el archivo LN más ". LCID .mui". Por ejemplo, para el archivo LN my-lib.dll , el archivo MUI para en-US se llamaría my-lib.dll.0409.mui .

Los recursos de cadena se codifican como tabla de cadenas de la siguiente manera:

IDIOMA IDIOMA_INGLÉS, SUBIDIOMA_NEUTRALTABLA DE CADENACOMENZAR1 L "texto del mensaje"FIN

Recuperación de recursos

Varias funciones win32 que leen recursos de aplicaciones están habilitadas para MUI, incluidas LoadString, FormatMessage y LoadImage. [3]

Cada función intenta leer un recurso para un idioma seleccionado en las preferencias de idioma globales, desde los recursos de la aplicación o los archivos MUI asociados (ubicados junto con el archivo LN y siguiendo la convención de nombres). Cada una utiliza las preferencias de idioma globales para elegir un idioma que esté disponible. Si la carga del recurso para el primer idioma preferido falla porque el archivo MUI no existe o el recurso no existe en el archivo MUI, la función intentará con el siguiente idioma preferido y así sucesivamente hasta que se hayan probado todas las preferencias. Si la carga falla para todos los idiomas preferidos, entonces intenta con el archivo LN.

La función más utilizada es LoadString, que carga cadenas desde un recurso de tabla de cadenas. Ejemplo de uso de LoadString:

wchar_t* resourceCharArray;int resourceLength = ::LoadStringW(_moduleHandle, resourceId, (LPWSTR)&resourceCharArray, 0);si (!longitudRecurso)    throw std::runtime_error("No se puede encontrar el recurso.");std::wstring texto;texto.append(resourceCharArray, resourceLength);

Esto recupera la dirección del búfer de caracteres de texto de recursos, que no se garantiza que termine en nulo. Luego, copia los caracteres a una std::string y se garantiza que su método c_str() terminará en nulo. Por lo tanto, no es necesario agregar un nulo. Otra opción es hacer que LoadString copie la cadena a un búfer pasado, pero eso requiere usar un búfer de longitud fija que tiene desventajas, como por ejemplo, asignar más de lo necesario o truncarlo si es demasiado corto.

Curiosamente, la documentación de MS para LoadString no menciona su interacción con MUI (uso de preferencia de idioma).

FormatMessage también es compatible con MUI. Su página de referencia de funciones describe su interacción con la preferencia de idioma del usuario cuando el parámetro dwLanguageId se pasa como 0. Pero FormatMessage lee desde una tabla de mensajes , no desde una tabla de cadenas y, como dice Raymond Chen, "nadie usa realmente tablas de mensajes". [4]

Almacenamiento y recuperación sin recursos

La documentación de MS recomienda almacenar los activos de la interfaz de usuario como recursos, ya que MUI admite completamente la recuperación desde este almacenamiento, pero señala que MUI admite cualquier otro formato de archivo, como XML, JSON o archivos de texto sin formato. [5] Esto implica que no es necesario utilizar el aspecto de recuperación de recursos de MUI para que una aplicación esté habilitada para MUI. Una aplicación puede utilizar su propia lógica de recuperación de activos de la interfaz de usuario personalizada.

Para que la aplicación sea compatible con MUI, debe utilizar las preferencias de idioma del sistema. La lógica de recuperación de recursos de la interfaz de usuario personalizada puede utilizar opcionalmente la función MUI GetFileMUIPath para aprovechar la ubicación del archivo MUI y las convenciones de nombres.

Otros aspectos

La documentación de MS MUI describe los siguientes conceptos, pero no está claro cómo se relacionan con MUI y qué valor ofrecen:

Implementando

Tareas básicas para soportar/implementar MUI:

Una vez completadas las tareas básicas, la aplicación se habilita para MUI. Sin embargo, existen otras funciones de MUI que la aplicación puede aprovechar de manera opcional.

Las tareas básicas implican almacenar todos los idiomas en los recursos del binario de la aplicación, lo que significa que no es neutral en cuanto al idioma. Esta estructura proporciona todos los beneficios de localización en tiempo de ejecución de MUI y una implementación simple de un solo archivo, pero no permite la flexibilidad de implementación que brinda MUI. Para aprovechar la flexibilidad de implementación:

Para almacenar recursos localizados en formatos distintos de los de recursos, la aplicación debe implementar un mecanismo para leer recursos en tiempo de ejecución según la configuración del sistema de preferencias de idioma (consulte GetThreadUILanguage). En otras palabras, la aplicación carga recursos de IU según la configuración del sistema de preferencias de idioma sin utilizar LoadString. La aplicación puede aprovechar la convención de nombres y la ubicación de archivos por idioma de MUI mediante GetFileMUIPath.

Ventajas sobre la versión localizada

La tecnología MUI se desarrolló como respuesta y mejora de las versiones localizadas , una tecnología más antigua para globalizar e implementar paquetes de software. En esta sección se describen las diferencias y ventajas de MUI en comparación con las versiones localizadas.

Windows localizado a través de un paquete MUI logra el mismo objetivo que una versión localizada, pero existen diferencias clave. Si bien ambos muestran menús y cuadros de diálogo en el idioma de destino, solo una versión localizada usa nombres de archivos y carpetas traducidos. [¿Qué significa esto? Algunas carpetas especiales son localizables (Documentos, Descargas, etc.) pero un archivo o carpeta creado por el usuario no es localizable (por el SO). ¿Un paquete de idioma no localiza los nombres de carpetas especiales? ¿Qué más podría hacer?]

Una versión localizada de Windows traduce el sistema operativo base, así como todos los programas incluidos [¿qué programas?], incluidos los nombres de archivos y carpetas [por lo que sí localiza los nombres de archivos y carpetas. Esto contradice lo anterior], los nombres de objetos [¿qué es un objeto?], las cadenas en el registro [¿en serio? ¿qué cadenas?] y cualquier otra cadena interna utilizada por Windows a un idioma en particular. Las versiones localizadas de Windows admiten la actualización desde una versión localizada anterior y los recursos de la interfaz de usuario están completamente localizados, lo que no sucede con las versiones MUI de un producto. [¿Qué no sucede con MUI?]

Una versión de MUI no contiene funciones administrativas traducidas, como entradas de registro [¿las entradas de registro son funciones?] y elementos en Microsoft Management Console .

Una ventaja de una versión MUI es que cada usuario de una computadora puede usar un idioma diferente. [8] Para una versión localizada del SO, esto no es posible. Puede ser posible para aplicaciones localizadas, pero requiere instalar múltiples versiones; una para cada idioma, y ​​esto puede generar problemas de espacio de almacenamiento de la aplicación y de instalación en paralelo. Con MUI, la versión única admite varios idiomas, y el SO y las aplicaciones usan el idioma preferido del usuario. Además, el mismo SO puede alojar una aplicación que use cualquiera de los idiomas admitidos por la aplicación, que pueden ser diferentes al idioma seleccionado por el SO e incluso un idioma que no sea compatible con el SO.

Historia

MUI se introdujo con Windows 2000 y es compatible con cada versión posterior de Windows.

Windows 2000 y Windows XP

Los productos MUI para estas versiones estaban disponibles únicamente a través de acuerdos de volumen de Microsoft. No estaban disponibles a través de canales minoristas. Sin embargo, algunos OEM distribuían el producto. [ cita requerida ]

Idiomas en Windows XP

Hasta Windows XP , los paquetes MUI de un producto se aplican sobre una versión en inglés para brindar una experiencia de usuario localizada. Hay un total de 5 conjuntos de paquetes MUI.

Conjunto 1
Conjunto 2
Conjunto 3
Conjunto 4
Conjunto 5

Windows Vista

La tecnología MUI mejorada de Windows Vista separa los recursos en inglés de los archivos binarios de lógica de la aplicación . Los archivos de lógica de la aplicación ahora son independientes del idioma. En otras palabras, los archivos de lógica de la aplicación ya no están centrados en el inglés. Esta separación permite cambiar de idioma por completo sin cambiar los binarios básicos de Windows y tener varios idiomas instalados utilizando los mismos binarios de lógica de la aplicación. Los idiomas se aplican como paquetes de idioma que contienen los recursos necesarios para localizar parte o toda la interfaz de usuario en Windows Vista.

Los paquetes MUI están disponibles para los usuarios de Windows Vista Enterprise y como Ultimate Extras para los usuarios de Windows Vista Ultimate.

A partir de Windows Vista, el conjunto de API MUI asociadas también se pone a disposición de los desarrolladores para el desarrollo de aplicaciones. [¿Esto permite que cualquiera pueda utilizar la tecnología MUI?]

En el lanzamiento, se lanzaron los siguientes 16 paquetes de idiomas:

El 23 de octubre de 2007, se lanzaron los 19 paquetes de idiomas restantes:

Ventanas 7

MUI está disponible para los usuarios de las ediciones Windows 7 Enterprise y Ultimate, así como de Windows Phone 7.

A partir de Windows 7, Microsoft comenzó a referirse a un "paquete MUI" como un "paquete de idioma"; no debe confundirse con un paquete de interfaz de idioma (LIP). [9]


Lista de idiomas en Windows 7 (PC)

En el lanzamiento, se lanzaron los siguientes 15 paquetes de idiomas [10] (el chino (Hong Kong) no está disponible en dispositivos móviles):

El 31 de octubre de 2009, se lanzaron los 22 paquetes de idiomas restantes (estonio, croata, letón, lituano, rumano, eslovaco, esloveno, serbio, búlgaro, hebreo, árabe y tailandés no están disponibles en dispositivos móviles):

Lista de idiomas en Windows Phone 7

En el lanzamiento, solo se admitían seis idiomas.

Con el lanzamiento de Windows Phone 7.5 el 27 de septiembre de 2011, se agregaron veinte idiomas más (el turco y el ucraniano no se admiten como idiomas de visualización hasta Windows Phone 8). [11] Los primeros LIP para Windows Phone 7 fueron el indonesio y el malayo con la actualización de Tango. [12]

Windows 8/8.1/RT

A partir de Windows 8/RT, la mayoría de las ediciones de Windows pueden descargar e instalar todos los paquetes de idioma, [13] con algunas excepciones:

Ventanas 10

A partir de la versión 1803 de Windows 10, Microsoft comenzó a usar el término "Local Experience Pack" (LXP) en algunos lugares [¿tienda?] en lugar del término más antiguo "Language Pack", pero funcionan de la misma manera. [18] Además de instalarse a través de la configuración de Windows, estos 110 LXP también están disponibles a través de Microsoft Store (aplicación y web); este último permite la instalación remota para ediciones de consumidor de Windows. [19] Al igual que con todas las aplicaciones de Microsoft Store, solo los LXP que son compatibles con ese dispositivo Windows se muestran en la aplicación de Microsoft Store.

Un LXP se actualiza a través de Microsoft Store; fuera del ciclo normal de actualización de Windows. [20]

Idiomas soportados

Los idiomas admitidos por versión del sistema operativo son los siguientes:

ordenador personal

Móvil

La interfaz de usuario multilingüe para Windows Phones no apareció hasta la versión 7.0.

Patentar

La tecnología MUI está protegida por una patente internacional titulada "Interfaz de usuario multilingüe para un sistema operativo". [21] Los inventores son Bjorn C. Rettig, Edward S. Miller, Gregory Wilson y Shan Xu.

Véase también

Referencias

  1. ^ Karl-Bridge-Microsoft. «Interfaz de usuario multilingüe: aplicaciones Win32». docs.microsoft.com . Consultado el 10 de julio de 2022 .
  2. ^ Karl-Bridge-Microsoft. "Funciones de interfaz de usuario multilingüe: aplicaciones Win32". docs.microsoft.com . Consultado el 10 de julio de 2022 .
  3. ^ Karl-Bridge-Microsoft. "Carga de recursos de lenguaje: aplicaciones Win32". docs.microsoft.com . Consultado el 10 de julio de 2022 .
  4. ^ Chen, Raymond (29 de febrero de 2008). "¿Por qué no puedo hacer que FormatMessage cargue mi cadena de recursos?". The Old New Thing . Consultado el 8 de julio de 2022 .
  5. ^ Karl-Bridge-Microsoft. "Configuración del idioma del sistema de compatibilidad: aplicaciones Win32". docs.microsoft.com . Consultado el 9 de julio de 2022 .
  6. ^ Karl-Bridge-Microsoft. "Preparación de un archivo de configuración de recursos: aplicaciones Win32". docs.microsoft.com . Consultado el 10 de julio de 2022 .
  7. ^ Karl-Bridge-Microsoft. "Uso de la redirección de cadenas de registro: aplicaciones Win32". docs.microsoft.com . Consultado el 10 de julio de 2022 .
  8. ^ "Acerca de la interfaz de usuario multilingüe". Microsoft . Consultado el 22 de junio de 2022 .
  9. ^ "Cómo instalar paquetes de idioma en Windows 7". The Windows Club. Archivado desde el original el 1 de agosto de 2010. Consultado el 29 de abril de 2016 .
  10. ^ Equipo, Editorial Mi Vida Digital (12 de julio de 2009). «Hoja de ruta del lanzamiento de Windows 7 RTM GA y del calendario de lanzamiento de MSDN/TechNet « Mi Vida Digital». Mi Vida Digital . Consultado el 26 de julio de 2023 .
  11. ^ Blog, Windows Experience; McConnell, John (6 de julio de 2011). "Windows Phone en todo el mundo: compatibilidad de idiomas en Mango". Blog de Windows Experience . Consultado el 22 de noviembre de 2023 .
  12. ^ Blog, Windows Experience; Myerson, Terry (27 de febrero de 2012). "Windows Phone en el Mobile World Congress 2012". Blog de Windows Experience . Consultado el 22 de noviembre de 2023 .
  13. ^ "Hay paquetes de idiomas disponibles para Windows 8 y Windows RT". Microsoft . Consultado el 29 de abril de 2016 .
  14. ^ "Verifique si su versión de Windows admite varios idiomas". support.microsoft.com . Consultado el 10 de enero de 2022 .
  15. ^ Blog, Windows Experience (6 de julio de 2011). "Windows Phone en el mundo: compatibilidad de idiomas en Mango". Blog de Windows Experience . Consultado el 10 de enero de 2022 .
  16. ^ "Obtener Samsung Notes". Microsoft Store . Consultado el 10 de enero de 2022 .
  17. ^ "Paquetes de idiomas para Windows". support.microsoft.com . Consultado el 11 de enero de 2022 .
  18. ^ "Paquetes de experiencia local: ¿qué son y cuándo debería usarlos?". TECHCOMMUNITY.MICROSOFT.COM . 2018-11-14 . Consultado el 2022-01-10 .
  19. ^ "Paquetes de experiencia local". Microsoft Store . Consultado el 10 de enero de 2022 .
  20. ^ "Paquetes de experiencia local". support.microsoft.com . Consultado el 11 de enero de 2022 .
  21. ^ Patente estadounidense 6252589, "Interfaz de usuario multilingüe para un sistema operativo", publicada el 14 de mayo de 2003