Hacer que la aplicación sea localizable

Una aplicación localizada es aquella 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 ha separado limpiamente de sus recursos localizables. Por lo tanto, debes determinar cuáles de los recursos de la aplicación deben localizarse. Pregúntese qué debe cambiar si la 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 forma rígida 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 obtener más información, consulte Localizar cadenas en la interfaz de usuario y el manifiesto del paquete de la 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 las cadenas que deben traducirse a los traductores.

Establezca el idioma predeterminado de la aplicación correctamente 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 saber en qué idioma se encuentra el recurso y cómo se usa en situaciones concretas.

Personalización de las 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 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 sensible culturalmente a las 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, que no son comunes en todo el mundo. Evite símbolos religiosos, animales, imágenes políticas o específicas de género. La presentació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 localizas a un idioma que tiene una dirección de lectura diferente de la del tuyo, el uso de efectos e imágenes simétricas facilita la admisión de la creación de reflejos.

Evite también el uso de texto en imágenes y la voz en archivos de audio y 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, dependiendo del contexto. En inglés "on" y "off" pueden usarse para alternar entre el modo de vuelo, la red Bluetooth y los dispositivos. No obstante, en italiano, la traducción depende del contexto de lo que se activa o desactiva. Debes crear un par de cadenas para cada contexto. Puedes volver a usar las cadenas si dos contextos son iguales. Por ejemplo, puedes volver a usar la cadena "Volume" tanto para el volumen de los efectos de sonido como para el volumen de la música porque ambos hacen referencia a la intensidad del sonido. En cambio, no debes volver a usar la misma cadena cuando hagas referencia a "Volume" cuando se refiera al disco duro, porque el contexto y el significado son diferentes y la palabra puede traducirse de manera diferente.

Igualmente, una cadena como "text" o "fax" puede usarse tanto como verbo como sustantivo en inglés, lo que puede causar confusión en el proceso de traducción. En su lugar, crea una cadena separada para el formato de verbo y el de sustantivo. Cuando no estés seguro de si el contexto es el mismo, por si acaso usa una cadena diferente.

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 "cita", "tarea" o "documento". Aunque este ejemplo funciona para el idioma inglés, no funcionará en todos los casos para la oración correspondiente en, por ejemplo, alemán. Ten en cuenta que en las siguientes oraciones en alemán, algunas de las palabras de la cadena de plantilla ("Der", "Die", "Das") tienen que coincidir con la palabra parametrizada:

Inglés Alemán
The appointment could not be synchronized. Der Termin konnte nicht synchronisiert werden.
No pudo sincronizarse la tarea. Die Aufgabe konnte nicht synchronisiert werden.
No pudo sincronizarse 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, en polaco, se usa "minuta", "minuty" o "minut" según el contexto.

Para resolver este problema, localiza toda la oración en lugar de una única palabra. Aunque hacer esto parezca demandar trabajo extra y que no sea una solución elegante, es la mejor solución porque:

  • Se mostrará un mensaje correcto gramaticalmente para todos los idiomas.
  • El traductor no tendrá que preguntar por qué se reemplazarán las cadenas.
  • De todos modos, no necesitarás implementar una engorrosa corrección de código cuando aparezca un problema como este después de que completes la aplicación.

Otras consideraciones para las cadenas

Evite los coloquialismos y las metáforas en las cadenas que cree en el 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. Del mismo modo, las metáforas pueden tener sentido para una persona, pero no significar nada para otra. Por ejemplo, un "bluebird" 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 uses una jerga técnica, abreviaturas ni acrónimos. Es muy poco probable que aquellas personas que no pertenecen al ámbito técnico o que provienen de otras culturas o regiones comprendan el lenguaje técnico, como también es difícil que puedan traducirlo. En las conversaciones de la vida diaria no se usan este tipo de palabras. 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 actuarlo 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. Se 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 el idioma predeterminado esté disponible 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 los recursos de idioma que coincidan con el idioma y la referencia cultural actuales del dispositivo. Por lo tanto, si el dispositivo está configurado para en-US, solo los recursos de idioma en-US se instalan 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 la 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 .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

Evita agresiones políticas en mapas o cuando hagas referencia 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 se refiere a ella como un "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 los 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 de calificador y Actualización de imágenes en respuesta a eventos de cambio de valor de calificador.

Asegúrese del orden correcto de los parámetros 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 orden inverso. Asegúrese de que el traductor conozca 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 localice 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
<link>terms of use</link> términos de uso
<link>privacy policy</link> directiva de privacidad

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

Elección de un enfoque de traducción adecuado

Después de que las cadenas se separan en archivos de recursos, pueden traducirse. El momento ideal para traducir cadenas es después de que se finalizan las cadenas de un proyecto, que generalmente sucede hacia el final de éste. Puedes abordar el proceso de traducción de diferentes maneras, según el volumen de cadenas por traducir, el número de idiomas por traducir y el modo en que se realizará la traducción (como internamente en contraposición a mediante la contratación de un proveedor externo).

Ten en cuenta estas opciones.

  • Puedes traducir los archivos de recursos abriéndolos 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. Puede ser apropiado para un escenario en el que un desarrollador habla más de un idioma y quiere 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 particular, los recursos de diferentes idiomas pueden perder la sincronización con facilidad, lo que causa malas experiencias de usuario y dolores de cabeza en el mantenimiento.
  • El formato del texto de los archivos de recursos de cadena es de tipo XML o ResJSON, así que puedes traducirlos mediante cualquier editor de texto. Una vez hecho esto, los archivos que hayas traducido se copiarán en el proyecto. Debes tener en cuenta que, si los traductores usan este método, es posible que acaben traduciendo por accidente las etiquetas XML, pero podrán trabajar en un entorno que no sea el proyecto Microsoft Visual Studio. Puedes usar este método para aquellos proyectos que debas traducir en unos pocos idiomas. El formato XLIFF es un formato XML que se diseñó específicamente para la localización, y que es compatible con varias de herramientas y proveedores de localización. Asimismo, puedes usar el Kit de herramientas para aplicaciones multilingües para crear archivos XLIFF a partir de otros archivos de recursos como, por ejemplo, .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 las etiquetas XML por error, pero tiene la desventaja de introducir un nuevo proceso y herramienta al proceso de localización. Una herramienta de localización es buena para los proyectos con un gran volumen de cadenas, pero un pequeño número de idiomas. Para obtener más información, consulta el artículo acerca de Cómo usar el 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 localizaciones puede darte consejo sobre las herramientas y los procesos, así como traducir tus archivos de recursos. Esta es una solución ideal, pero también la opción más costosa, y puede aumentar los tiempos de entrega para el contenido traducido.

Mantener las claves de acceso y las etiquetas coherentes

Es todo un desafío sincronizar las claves de acceso que se usan en los métodos de accesibilidad con el modo de visualizar las claves de acceso localizadas, ya que los dos recursos de cadena se clasifican en dos secciones separadas. Asegúrate de proporcionar comentarios para la cadena de etiquetas, 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) dependiendo de la palabra en la que se usen. Esto supone un problema cuando intentas ordenar objetos con nombres en japonés, como nombres de aplicaciones, archivos, canciones, etc. En el pasado, el kanji japonés se ordenó normalmente en un orden comprensible de la máquina denominado XJIS. Desafortunadamente, debido a que este orden de clasificación no es fonético, no es muy útil para los usuarios.

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 usas el procedimiento siguiente para agregar furigana al nombre de la aplicación, puedes asegurarte 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. No obstante, existe la posibilidad de que los nombres de las aplicaciones que contienen texto por leer poco común o exclusivo se ordenen conforme a una lectura más común. 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. Agrega "ms-resource:Appname" como nombre para mostrar del paquete y nombre para mostrar de la aplicación.

  2. Crea una carpeta denominada ja-JP bajo el elemento Strings y agrega dos archivos de recursos tal como sigue:

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

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

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

El método de ordenación sigue el formato del 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 bajo "漢字".

Ejemplos