Compartir a través de


Hacer que la aplicación sea localizable

Una aplicación localizada es una que se puede localizar para otros mercados, idiomas o regiones sin descubrir defectos funcionales en la aplicación. La propiedad más esencial de una aplicación localizable es que su código ejecutable se haya separado limpiamente de sus recursos localizables. Por lo tanto, debes determinar cuáles de los recursos de la aplicación deben localizarse. Pregúntate qué debe cambiar si tu aplicación se va a localizar para otros mercados.

También se recomienda familiarizarse con las directrices para la globalización.

Coloque las cadenas en archivos de recursos (.resw)

No codifique literales de cadena de código duro en el código imperativo, el marcado XAML ni en el manifiesto del paquete de la aplicación. En su lugar, coloque las cadenas en Archivos de recursos (.resw) para que se puedan adaptar a diferentes mercados locales independientemente de los archivos binarios compilados de la aplicación. Para detalles, consulte Localizar cadenas en la UI y el manifiesto de paquete de aplicación.

En ese tema también se muestra cómo agregar comentarios al archivo de recursos predeterminado (.resw). Por ejemplo, si está adoptando una voz o un tono informales, asegúrese de explicarlo en los comentarios. Además, para minimizar los gastos, confirme que solo se proporcionan a los traductores las cadenas que deben traducirse.

Establezca el idioma predeterminado de la aplicación de forma adecuada en el archivo de origen del manifiesto del paquete de la aplicación (el Package.appxmanifest archivo). El idioma predeterminado determina el idioma que se usa cuando los idiomas preferidos del usuario no coinciden con ninguno de los idiomas admitidos de la aplicación. Marque todos los recursos con su idioma (incluso los del idioma predeterminado, por ejemplo \Assets\en-us\Logo.png) para que el sistema pueda indicar en qué idioma está el recurso y cómo se usa en situaciones concretas.

Adaptar sus imágenes y otros recursos de archivo para el idioma

Idealmente, podrá globalizar sus imágenes, es decir, hacer que sean independientes de la cultura. Para cualquier imagen y otros recursos de archivo en los que no sea posible, cree tantas variantes diferentes de ellas como necesite y coloque los calificadores de idioma adecuados en sus nombres de archivo o carpeta. Para obtener más información, consulte Personalización de los recursos para lenguaje, escala, contraste alto y otros calificadores.

Para minimizar los costos de localización, no coloque texto ni material culturalmente confidencial en imágenes para comenzar. Una imagen adecuada en su propia cultura puede ser ofensiva o malinterpretado en otras referencias culturales. Evite el uso de imágenes específicas de la referencia cultural, como buzones de correo, que no son comunes en todo el mundo. Evite símbolos religiosos, animales, imágenes políticas o específicas de género. La visualización de carne, partes del cuerpo o gestos de mano también puede ser un tema sensible. Si no puede evitar todos estos, las imágenes deberán localizarse cuidadosamente. Si está localizando en un idioma con una dirección de lectura diferente a la suya propia, el uso de imágenes y efectos simétricos facilita la creación de reflejo.

Evite también el uso de texto en imágenes y voz en archivos de audio/vídeo.

El uso de color en la aplicación

Tenga en cuenta al usar el color. El uso de combinaciones de colores asociadas a banderas nacionales o movimientos políticos puede ser problemático. Es posible que los expertos en cultura revisen las opciones de color. También hay problemas de accesibilidad con el uso del color. Si usa color para transmitir significado, también debe transmitir esa misma información por algún otro medio, como el tamaño, la forma o una etiqueta.

Considere la posibilidad de factorizar las cadenas en oraciones

Use cadenas de tamaño adecuado. Las cadenas cortas son más fáciles de traducir y habilitan el reciclaje de traducción (lo que ahorra gastos porque la misma cadena no se envía al localizador más de una vez). Además, es posible que las herramientas de localización no admita cadenas extremadamente largas.

Pero en tensión con esta guía es el riesgo de volver a usar una cadena en contextos diferentes. Incluso las palabras simples como "on" y "off" pueden traducirse de forma diferente, en función del contexto. En inglés, se puede usar "on" y "off" para un botón de alternancia para el modo de vuelo, Bluetooth y dispositivos. Pero en italiano, la traducción depende del contexto de lo que se está activando y desactivando. Tendría que crear un par de cadenas para cada contexto. Puede reutilizar cadenas si los dos contextos son los mismos. Por ejemplo, puede reutilizar la cadena "Volume" para el volumen de efectos de sonido y el volumen de música porque ambos hacen referencia a la intensidad del sonido. No debe reutilizar esa misma cadena al hacer referencia a un volumen de disco duro porque el contexto y el significado son diferentes y la palabra se puede traducir de forma diferente.

Además, una cadena como "text" o "fax" podría usarse como verbo y un sustantivo en el idioma inglés, lo que puede confundir el proceso de traducción. En su lugar, cree una cadena independiente para el formato de verbo y sustantivo. Cuando no esté seguro de si los contextos son los mismos, erre en el lado seguro y use una cadena distinta.

En resumen, factorice las cadenas en partes que funcionan en todos los contextos. Habrá casos en los que una cadena deba ser una oración completa.

Tenga en cuenta la siguiente cadena: "No {0} se pudo sincronizar".

Una variedad de palabras podría reemplazar {0}, como "appointment", "task" o "document". Aunque este ejemplo funciona para el idioma inglés, no funcionará en todos los casos para la frase correspondiente en, por ejemplo, alemán. Observe que en las siguientes oraciones alemanas, algunas de las palabras de la cadena de plantilla ("Der", "Die", "Das") deben coincidir con la palabra parametrizada:

English Alemán
No se pudo sincronizar la cita. Der Termin konnte nicht synchronisiert werden.
No se pudo sincronizar la tarea. Die Aufgabe konnte nicht synchronisiert werden.
No se pudo sincronizar el documento. Das Dokument konnte nicht synchronisiert werden.

Como otro ejemplo, considere la frase "Recordarme en {0} minutos". El uso de "minutos" funciona para el idioma inglés, pero otros idiomas pueden usar términos diferentes. Por ejemplo, el idioma polaco usa "minuta", "minuty" o "minut" en función del contexto.

Para resolver este problema, localice toda la frase, en lugar de una sola palabra. Esto puede parecer un trabajo adicional y una solución inelegant, pero es la mejor solución porque:

  • Se mostrará un mensaje gramaticalmente correcto para todos los idiomas.
  • El traductor no tendrá que preguntar por qué se reemplazarán las cadenas.
  • No tendrás que implementar una costosa corrección de código cuando se produzca un problema como este una vez completada la aplicación.

Otras consideraciones para las cadenas

Evite los coloquialismos y metáforas en las cadenas que cree en su idioma predeterminado. El idioma específico de un grupo demográfico, como la cultura y la edad, puede ser difícil de entender o traducir porque solo las personas de ese grupo demográfico usan ese idioma. De forma similar, las metáforas pueden tener sentido para una persona, pero no significan nada para otra persona. Por ejemplo, un "pájaro azul" significa algo específico para aquellos que forman parte de la cultura de esquí, pero aquellos que no forman parte de esa cultura no entienden la referencia.

No use jerga técnica, abreviaturas ni acrónimos. Es menos probable que el lenguaje técnico lo comprendan audiencias no técnicas o personas de otras culturas o regiones, y es difícil traducir. Las personas no usan este tipo de palabras en conversaciones cotidianas. El lenguaje técnico suele aparecer en mensajes de error para identificar problemas de hardware y software, pero debe ser técnico solo si el usuario necesita ese nivel de información y puede actuar o encontrar a alguien que pueda.

El uso de una voz o tono informal en las cadenas es una opción válida. Puede usar comentarios en el archivo de recursos predeterminado (.resw) para indicar esa intención.

Pseudolocalización

Pseudolocalización de la aplicación para descubrir cualquier problema de localizabilidad. La pseudolocalización es un tipo de prueba de localización en seco o divulgación. Genera un conjunto de recursos que no se traducen realmente; sólo miran de esa manera. Las cadenas son aproximadamente un 40 % más largas que en el idioma predeterminado, por ejemplo, y tienen delimitadores en ellas para que pueda ver de un vistazo si se han truncado en la interfaz de usuario.

Consideraciones de implementación

Al instalar una aplicación que contiene datos de idioma localizados, es posible que solo esté disponible el idioma predeterminado para la aplicación aunque inicialmente haya incluido recursos para varios idiomas. Esto se debe a que el proceso de instalación está optimizado para instalar solo recursos de idioma que coincidan con el idioma actual y la referencia cultural del dispositivo. Por lo tanto, si el dispositivo está configurado para en-US, solo se instalan los recursos de idioma en-US con la aplicación.

Nota:

No es posible instalar compatibilidad con idiomas adicionales para la aplicación después de la instalación inicial. Si cambia el idioma predeterminado después de instalar una aplicación, la aplicación sigue usando solo los recursos de idioma originales.

Si quiere asegurarse de que todos los recursos de idioma están disponibles después de la instalación, cree un archivo de configuración para el paquete de aplicación que especifique que se requieren determinados recursos durante la instalación (incluidos los recursos de idioma). Esta característica de instalación optimizada se habilita automáticamente cuando se genera el archivo .appxbundle de la aplicación durante el empaquetado. Para obtener más información, consulte Asegurarse de que los recursos están instalados en un dispositivo, independientemente de si un dispositivo los requiere.

Opcionalmente, para asegurarse de que todos los recursos están instalados (no solo un subconjunto), puede deshabilitar la generación de .appxbundle al empaquetar la aplicación. Sin embargo, esto no se recomienda, ya que puede aumentar el tiempo de instalación de la aplicación.

Deshabilite la generación automática de .appxbundle estableciendo el atributo "Generate App Bundle" en "never":

  1. En Visual Studio, haga clic con el botón derecho en el nombre del proyecto.
  2. Seleccione Tienda ->Crear paquetes de aplicaciones...
  3. En el cuadro de diálogo Crear paquetes , seleccione Quiero crear paquetes para cargarlos en Microsoft Store con un nuevo nombre de aplicación y, a continuación, haga clic en Siguiente.
  4. En el cuadro de diálogo Seleccionar un nombre de aplicación, seleccione o cree un nombre de aplicación para el paquete.
  5. En el cuadro de diálogo Seleccionar y configurar paquetes , establezca Generar agrupación de aplicaciones en Nunca.

Conciencia geopolítica

Evite la ofensa política en mapas o al referirse a regiones. Los mapas pueden incluir límites regionales o nacionales controvertidos, y son una fuente frecuente de ofensa política. Tenga cuidado de que cualquier interfaz de usuario usada para seleccionar una nación hace referencia a ella como "país o región". Enumerar un territorio disputado en una lista etiquetada como "países", como en un formulario de dirección, podría ofender a algunos usuarios.

Eventos modificados por idioma y región

Suscríbase a eventos que se generan cuando cambie la configuración de idioma y región del sistema. Haga esto para que pueda volver a cargar recursos, si procede. Para obtener más información, consulte Actualización de cadenas en respuesta a eventos de cambio de valor calificador y Actualización de imágenes en respuesta a eventos de cambio de valor calificador.

Asegúrese del orden de parámetro correcto al dar formato a las cadenas

No suponga que todos los lenguajes expresan parámetros en el mismo orden. Por ejemplo, considere este formato.

    string.Format("Every {0} {1}", monthName, dayNumber); // For example, "Every April 1".

La cadena de formato de este ejemplo funciona para inglés (Estados Unidos). Pero no es adecuado para alemán (Alemania), por ejemplo, donde el día y el mes se muestran en el orden inverso. Asegúrese de que el traductor conoce la intención de cada uno de los parámetros para que puedan invertir el orden de los elementos de formato en la cadena de formato (por ejemplo, "{1}{0}") según corresponda para el idioma de destino.

No localizar por encima de la localización

Enviar solo lenguaje natural a los traductores; no lenguaje de programación ni marcado. Una <link> etiqueta no es lenguaje natural. Tenga en cuenta estos ejemplos.

No localice esto Localizar esto
<términos>de uso< o vínculo de vínculo> términos de uso
<vincular>directiva de privacidad</vínculo> directiva de privacidad

Incluir la etiqueta en el <link> archivo de recursos (.resw) significa que también es probable que se traduzca. Esto representaría la etiqueta no válida. Si tiene cadenas largas que necesitan incluir marcado para mantener el contexto y garantizar la ordenación, a continuación, desactive los comentarios que no se van a traducir.

Elección de un enfoque de traducción adecuado

Una vez que las cadenas se separan en archivos de recursos, se pueden traducir. El tiempo ideal para traducir cadenas es después de que se finalicen las cadenas del proyecto, lo que suele ocurrir hacia el final de un proyecto. Puede abordar el proceso de traducción de varias maneras. Esto puede depender del volumen de cadenas que se van a traducir, del número de idiomas que se van a traducir y de cómo se realizará la traducción (por ejemplo, internamente frente a contratar a un proveedor externo).

Ten en cuenta estas opciones.

  • Los archivos de recursos se pueden traducir abriendo directamente en el proyecto. Este enfoque funciona bien para un proyecto que tiene un pequeño volumen de cadenas que deben traducirse en dos o tres idiomas. Podría ser adecuado para un escenario en el que un desarrollador habla más de un idioma y está dispuesto a controlar el proceso de traducción. Este enfoque se beneficia de ser rápido, no requiere herramientas y minimiza el riesgo de errores de traducción. Pero no es escalable. En concreto, los recursos de diferentes idiomas pueden salir fácilmente de la sincronización, causando malas experiencias de usuario y dolores de cabeza de mantenimiento.
  • Los archivos de recursos de cadena están en formato de texto XML o ResJSON, por lo que podría entregarse para la traducción mediante cualquier editor de texto. Los archivos traducidos se copiarían de nuevo en el proyecto. Este enfoque conlleva un riesgo de que los traductores editen accidentalmente las etiquetas XML, pero permite que el trabajo de traducción se realice fuera del proyecto de Microsoft Visual Studio. Este enfoque podría funcionar bien para los proyectos que deben traducirse a un pequeño número de idiomas. El formato XLIFF es un formato XML diseñado específicamente para su uso en la localización y debe ser bien compatible con algunos proveedores de localización o herramientas de localización. Puede usar el kit de herramientas para aplicaciones multilingües para generar archivos XLIFF a partir de otros archivos de recursos, como .resw o .resjson.

Nota:

La localización también puede ser necesaria para otros recursos, incluidas imágenes y archivos de audio.

También debe tener en cuenta lo siguiente:

  • Herramientas de localización Hay varias herramientas de localización disponibles para analizar archivos de recursos y permitir que solo los traductores editen las cadenas traducibles. Este enfoque reduce el riesgo de que un traductor edite accidentalmente las etiquetas XML. Pero tiene el inconveniente de introducir una nueva herramienta y un proceso en el proceso de localización. Una herramienta de localización es adecuada para proyectos con un gran volumen de cadenas, pero un pequeño número de idiomas. Para obtener más información, consulte Uso del kit de herramientas para aplicaciones multilingües.
  • Proveedores de localización Considere la posibilidad de usar un proveedor de localización si la aplicación contiene cadenas extensas que deben traducirse a un gran número de idiomas. Un proveedor de localización puede proporcionar asesoramiento sobre herramientas y procesos, así como traducir los archivos de recursos. Esta es una solución ideal, pero también es la opción más costosa y puede aumentar el tiempo de solución para el contenido traducido.

Mantener coherentes las claves de acceso y las etiquetas

Es un desafío "sincronizar" las claves de acceso usadas en accesibilidad con la visualización de las claves de acceso localizadas, ya que los dos recursos de cadena se clasifican en dos secciones independientes. Asegúrese de proporcionar comentarios para la cadena de etiqueta, como: Make sure that the emphasized shortcut key is synchronized with the access key.

Compatibilidad con furigana para cadenas japonesas que se pueden ordenar

Los caracteres kanji japoneses tienen la propiedad de tener más de una lectura (pronunciación) en función de la palabra en la que se usen. Esto provoca problemas al intentar ordenar objetos con nombre japoneses, como nombres de aplicación, archivos, canciones, etc. En el pasado, el kanji japonés se ordenó en un orden comprensible de la máquina denominado XJIS. Desafortunadamente, dado que este criterio de ordenación no es fonético, no es muy útil para los seres humanos.

Furigana funciona en torno a este problema al permitir que el usuario o el creador especifiquen los fonéticos para los caracteres que están usando. Si usa el siguiente procedimiento para agregar furigana al nombre de la aplicación, puede asegurarse de que se ordena en la ubicación adecuada en la lista de aplicaciones. Si el nombre de la aplicación contiene caracteres kanji y furigana no se proporciona cuando el idioma de la interfaz de usuario del usuario o el criterio de ordenación se establece en japonés, Windows hace su mejor esfuerzo para generar la pronunciación adecuada. Sin embargo, existe la posibilidad de que los nombres de aplicación que contengan lecturas raras o únicas se ordenen bajo una lectura más común en su lugar. Por lo tanto, el procedimiento recomendado para las aplicaciones japonesas (especialmente aquellos que contienen caracteres kanji en sus nombres) es proporcionar una versión furigana de su nombre de aplicación como parte del proceso de localización japonés.

  1. Agregue "ms-resource:Appname" como nombre para mostrar del paquete y el nombre para mostrar de la aplicación.

  2. Cree una carpeta ja-JP en cadenas y agregue dos archivos de recursos de la siguiente manera:

    strings\
        en-us\
        ja-jp\
            Resources.altform-msft-phonetic.resw
            Resources.resw
    
  3. En Resources.resw para ja-JP general: agregue un recurso de cadena para Appname "希蒼"

  4. En Resources.altform-msft-phonetic.resw para recursos furigana japoneses: Agregar valor furigana para AppName "のあ"

El usuario puede buscar el nombre de la aplicación "希蒼" con el valor de furigana "のあ" (noa) y el valor fonético (con la función GetPhonetic del Editor de métodos de entrada (IME)) "まれあお" (mare-ao).

La ordenación sigue el formato de Panel de control regional:

  • En una configuración regional del usuario japonés,
    • Si furigana está habilitado, "希蒼" se ordena en "の".
    • Si falta furigana, "希蒼" se ordena en "ま".
  • En una configuración regional de usuario no japonés,
    • Si furigana está habilitado, "希蒼" se ordena en "の".
    • Si falta furigana, "希蒼" se ordena en "漢字".

Ejemplos