Cómo prepararse para la localización (HTML)

[ Este artículo está destinado a desarrolladores de Windows 8.x y Windows Phone 8.x que escriben aplicaciones de Windows Runtime. Si estás desarrollando para Windows 10, consulta la documentación más reciente ]

Sigue los pasos y procedimientos recomendados descritos aquí para preparar tu aplicación para localización. Antes de comenzar, asegúrate de leer la lista de comprobación para globalización para asegurarte de que tu aplicación esté lista para otras regiones de comercialización, regiones o idiomas.

Instrucciones

Usar calificadores y archivos de recurso

Asegúrate de especificar recursos de cadena en los archivos de recursos. Para obtener más información, consulta Inicio rápido: traducción de recursos de interfaz de usuario.

Especifica imágenes y otros recursos de archivo con la etiqueta de idioma apropiada en su archivo o carpeta. Ten en cuenta que localizar imágenes, audio y vídeo demanda una importante cantidad de recursos del sistema, por lo que es mejor usar activos multimedia independientes siempre que se pueda. Para obtener más información, consulta Cómo asignar nombre a los recursos mediante calificadores.

Agregar comentarios contextuales

Agrega comentarios de localización a los archivos de recursos de tu aplicación. Los comentarios están visibles para el localizador y deben proporcionar información contextual que lo ayude a traducir correctamente los recursos. Los comentarios deben proporcionar también información de restricción suficiente en el recurso para que la traducción no interrumpa el software. Los comentarios se pueden registrar de manera opcional mediante la herramienta Makepri.exe.

ResJSON permite metadatos en los campos que comienzan con un subrayado como los comentarios:

{
    "String"  : "Hello World",
    "_String1.comment" : "This is a comment to the localizer"
}

Localizar oraciones en lugar de palabras

Considera la siguiente cadena: "The {0} could not be synchronized".

Hay varias palabras que podrían reemplazar a {0}, como una cita, una tarea o un documento. Si bien este ejemplo funciona para el inglés, no lo hará en todos los casos para la misma oración en 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
No pudo sincronizarse la cita. 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, considera la oración "Remind me in {0} minute(s)". Si bien "minute(s)" funciona para el inglés, en otros idiomas probablemente se usen 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 de error claro para todos los idiomas.
  • El localizador no tendrá que preguntar qué es lo que reemplazará las cadenas.
  • No necesitarás implementar una costosa corrección de código cuando aparezca un problema como este después de que se complete la aplicación.

Garantizar el orden de parámetro correcto

No asumas que todos los idiomas usan los parámetros en el mismo orden. Por ejemplo, considera la cadena "Cada %s %s", donde el primer %s se reemplaza con el nombre de un mes, y el segundo %s se reemplaza con la fecha de un mes. Este ejemplo funciona para el idioma inglés, pero generará un error cuando se localice la aplicación en idioma alemán, donde la fecha y el mes se muestran en el orden inverso.

Para resolver este problema, cambia la cadena por "Cada %1 %2", para que el orden pueda intercambiarse según el idioma.

No localizar en exceso

Localiza cadenas específicas, no etiquetas. Considera los siguientes ejemplos:

Cadena sobrelocalizada Cadena localizada correctamente
<link>términos de uso</link> términos de uso
<link>directiva de privacidad</link> directiva de privacidad

 

Incluir la etiqueta <link> anterior en los recursos significa que también se localizará, lo que hará que se invalide. Solamente la cadena en sí debe localizarse. Generalmente, debes pensar que las etiquetas son código que debes mantener separado del texto localizable. No obstante, algunas cadenas largas deben incluir marcado para mantener el contexto y garantizar la ordenación.

No usar las mismas cadenas en contextos diferentes

Volver a usar una cadena probablemente parezca la mejor solución, pero puede causar problemas de localización si la misma palabra o frase puede tener contextos y significados diferentes.

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 el volumen de la música porque ambos hacen referencia a la intensidad del sonido. No debes volver a usar la misma cadena cuando hagas referencia a Volume con relación al disco duro porque el contexto y significado son diferentes y la palabra puede traducirse de manera diferente.

Otro ejemplo es el uso de las cadenas "on" y "off". En el idioma inglés, "on" y "off" pueden usarse para alternar los modos de vuelo, Bluetooth y 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.

Adicionalmente, una cadena como "text" o "fax" puede usarse tanto como verbo como sustantivo en el idioma 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.

Identificar recursos con atributos únicos

Los identificadores de recursos distinguen entre mayúscula y minúscula y deben ser exclusivos para cada archivo de recursos. Cuando se obtiene acceso a un recurso, usa el identificador de recursos, no el valor real de este. Los identificadores de recursos no cambian, pero los valores reales de los recursos cambian según el idioma.

Asegúrate de usar identificadores de recursos significativos para proporcionar contexto adicional a la traducción.

No cambies los identificadores de recursos después de que los recursos de cadena se envíen para su traducción. Los equipos de localización usan el identificador de recursos para realizar un seguimiento de las adiciones, eliminaciones y actualizaciones en los recursos. Los cambios realizados en los identificadores de recursos —también conocidos como "cambios a identificadores de recursos"— requieren que las cadenas vuelvan a traducirse, porque parecerá que se eliminaron y se agregaron otras.

Elegir un enfoque de traducción apropiado

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).

Considera las siguientes opciones:

  • Los archivos de recursos pueden traducirse abriéndolos directamente en el proyecto. Este enfoque funciona correctamente para un proyecto que tiene un pequeño volumen de cadenas y que necesita traducirse a 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 es beneficioso ya que es rápido, no requiere herramientas y minimiza el riesgo de malas traducciones, 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.
  • Los archivos de recursos de cadena tienen el formato de texto XML o ResJSON, por lo que pueden entregarse para traducción mediante cualquier editor de texto. Los archivos traducidos se copiarán dentro del proyecto. Este enfoque entraña el 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 puede funcionar correctamente en proyectos que deban traducirse a una pequeña cantidad de idiomas. El formato XLIFF es un formato XML específicamente diseñado para usarse en la localización y debe ser admitido correctamente por algunos proveedores y herramientas de localización. Puedes usar el Kit de herramientas para aplicaciones multilingües para generar archivos XLIFF desde otros archivos de recursos, como .resw o .resjson.

Probablemente sea necesario realizar entregas a los localizadores en el caso de otros archivos, como los archivos de audio y vídeo. Generalmente, no recomendamos crear archivos culturalmente dependientes porque pueden ser difíciles de localizar.

Además, considera las siguientes sugerencias:

  • Usa herramientas de localización. Están disponibles un número de herramientas de localización para analizar archivos de recursos y permitir que los traductores editen solamente 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 proyectos con un gran volumen de cadenas, pero una pequeña cantidad de idiomas. Para obtener más información, consulta Kit de herramientas para aplicaciones multilingües.
  • Usa un proveedor de localizaciones. Considera usar un proveedor de localizaciones si tu proyecto contiene un gran volumen de cadenas y debe traducirse a muchos 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.
  • Mantén informados a tus localizadores. Informales acerca de las cadenas que pueden considerarse sustantivos o verbos. Explícales aquellas palabras inventadas usando herramientas de terminología. Mantén la corrección gramatical de tus cadenas, y haz que no sean ambiguas y sean lo menos técnicas posibles para evitar confusiones.

Etiquetas y claves de acceso

"Sincronizar" las claves de acceso usadas en la accesibilidad con la visualización de las claves de acceso localizadas es todo un desafío para la localización, ya que los dos recursos de cadena se clasifican en dos secciones separadas. Es importante que sigas la implementación mostrada a continuación y que comentes correctamente la cadena de etiquetas para vincularla con la definición de clave de acceso.

<label id="theLabel" data-win-res="{accessKey: 'theLabelAccessKey'}" for="xPrinterRedirection" accessKey="L">The <u>L</u>abel</label>
<input type="checkbox" value="OFF" id="xPrinterRedirection" name="xPrinterRedirection" />

Asegúrate de proporcionar comentarios como: Make sure that <u>L</u> is synchronized with the access key "theLabelAccessKey"

Admitir furigana para las cadenas en japonés que pueden ordenarse

Los caracteres en kanji japonés tienen la propiedad exclusiva de tener más de una pronunciación dependiendo de la palabra o el contexto en el 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 solía ordenar siguiendo un orden que las máquinas pueden comprender llamado XJIS. Desafortunadamente, debido a que este orden de clasificación no es fonético, no es muy útil para los seres humanos.

Furigana proporciona una solución a este problema al permitir que el usuario o creador especifique la fonética para los caracteres que está usando. Si usas el siguiente procedimiento para agregar furigana al nombre de tu aplicación, puedes asegurarte de que está ordenado en la ubicación correcta de la lista de aplicaciones. Si el nombre de tu aplicación contiene caracteres kanji y furigana no se proporciona cuando el idioma de la UI del usuario o el orden de clasificación se establece en japonés, Windows busca la mejor manera de generar la pronunciación apropiada. 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 consiguiente, el procedimiento recomendado para las aplicaciones en japonés (especialmente las 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 al 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 ja-JP bajo strings, y agrega dos archivos de recursos como sigue:

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

  4. En Resources.altform-msft-phonetic.resw para recursos de japonés furinaga: agrega el valor Furigana para AppName "のあ"

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

La ordenación sigue el formato del panel de control regional:

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