Share via


Cómo administrar idiomas y regiones (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 ]

Puedes controlar el modo en que Windows selecciona recursos de la UI y da formato a los elementos de UI de la aplicación. Usa las diversas opciones de idioma y región que Windows proporciona para controlar estas características.

Para obtener una aplicación de muestra que ilustra cómo administrar la configuración de idioma y región, consulta Muestra de recursos de la aplicación y localización.

Un usuario de Windows no necesita elegir solamente un idioma de un conjunto limitado de idiomas. Por el contrario, puede decir a Windows que habla cualquier idioma del mundo, incluso si Windows en sí no está traducido a ese idioma. El usuario puede hasta especificar que puede hablar múltiples idiomas.

Puede especificar su ubicación, que puede ser en cualquier parte del mundo. También puede especificar que habla cualquier idioma de cualquier ubicación. La ubicación y el idioma no se limitan entre sí. Tan solo porque el usuario hable francés no significa que se encuentra en Francia, ni porque se encuentre en Francia significa que prefiere hablar francés.

Los usuarios de Windows pueden ejecutar aplicaciones en un idioma completamente distinto al de Windows. Por ejemplo, pueden ejecutar una aplicación en español mientras Windows esté ejecutándose en inglés.

En las aplicaciones de la Tienda Windows, los idiomas se representan mediante una etiqueta de idioma BCP-47. La mayoría de las API en Windows en tiempo de ejecución, HTML y XAML pueden devolver o aceptar representaciones de cadena de estas etiquetas de idioma BCP-47. Consulta también la lista de idiomas de IANA.

Para ver la lista de etiquetas de idioma que se admiten específicamente en la Tienda Windows, consulta Elegir tus idiomas.

Instrucciones

Paso 1: Establece las preferencias de idioma del usuario.

La lista de preferencias de idioma del usuario es una lista ordenada que describe los idiomas del usuario en el orden en el que este los prefiere.

Nota  Solo aplicaciones de la Tienda Windows. El usuario establece la lista en Panel de control > Reloj, idioma y región > Idioma.

Nota  Solo aplicaciones de la Tienda de Windows Phone. El usuario establece la lista en Configuración > Idioma.

La lista de preferencias de idioma del usuario puede contener múltiples idiomas y variantes regionales u otras variantes específicas. Por ejemplo, el usuario puede preferir fr-CA, pero también puede comprender en-GB.

Paso 2: Especifica los idiomas admitidos en el manifiesto de la aplicación.

Un desarrollador de aplicaciones especifica la lista de idiomas admitidos en el elemento Recursos del archivo de manifiesto de la aplicación (generalmente Package.appxmanifest) o Visual Studio genera automáticamente la lista de idiomas en el archivo de manifiesto en función de los idiomas encontrados en el proyecto. El manifiesto debe describir con precisión los idiomas admitidos en el nivel apropiado de granularidad. Los idiomas enumerados en el manifiesto son los idiomas que se muestran a los usuarios en la Tienda Windows.

Paso 3: Especifica el idioma predeterminado.

Una aplicación usa el idioma predeterminado cuando no admite ninguno de los idiomas que el usuario ha elegido. MSBuild y MakePRI.exe usan el idioma predeterminado para agregar metadatos a los activos marcados en ese idioma, lo que permite que se elijan los activos apropiados en el tiempo de ejecución.

Para usar Visual Studio para establecer el idioma predeterminado en un proyecto de aplicación de la Tienda Windows con JavaScript, haz lo siguiente:

  • Abre package.appxmanifest en Visual Studio, ve a la pestaña Aplicación y establece el idioma que usaste para crear la aplicación como idioma predeterminado.

La propiedad del idioma predeterminado también debe configurarse como el primer idioma del manifiesto para establecer adecuadamente el idioma de la aplicación (descrito en el siguiente paso, "Crea la lista de idiomas de la aplicación"). Los recursos del idioma predeterminado deben seguir calificándose con su idioma (por ejemplo, en-US/logo.png). El idioma predeterminado no especifica el idioma implícito de los activos sin calificar. Para obtener más información, consulta Cómo asignar nombre a los recursos mediante calificadores.

Paso 4: Califica los recursos con su idioma.

Ten muy en cuenta el público y el idioma y la ubicación de los usuarios a los que quieres dirigirte. Muchas personas que viven en una región no prefieren el idioma principal de dicha región. Por ejemplo, en muchos hogares de los Estados Unidos, el idioma principal es el español.

Cuando califiques los recursos con el idioma:

  • Incluye script cuando no se haya definido ningún valor de script de supresión para el idioma. Consulta el Registro de subetiquetas de IANA para obtener más información sobre las etiquetas de idioma. Por ejemplo, usa zh-Hant, zh-Hant-TW o zh-Hans, y no zh-CN o zh-TW.
  • Marca todo el contenido lingüístico con un idioma. La propiedad de proyecto de idioma predeterminado no es el idioma de recursos sin marcar (es decir, independiente del idioma); especifica qué recurso de idioma marcado debería elegirse si no hay ningún otro recurso de idioma marcado que coincida con el usuario.

Marca los activos con una representación precisa del contenido

  • Windows lleva a cabo tareas complejas de coincidencia incluso entre variantes regionales (por ejemplo, en-US o en-GB), de modo que las aplicaciones pueden marcar libremente los activos con una representación precisa del contenido y permitir que Windows obtenga la coincidencia adecuada para cada usuario.
  • La Tienda Windows muestra el contenido del manifiesto a los usuarios que ven la aplicación.
  • Ten en cuenta que algunas herramientas y otros componentes como los traductores automáticos pueden buscar etiquetas de idioma específicas, como información de dialectos, que son útiles para comprender los datos.
  • Asegúrate de marcar los activos con detalles completos, especialmente cuando hay varias variantes disponibles. Por ejemplo, marca en-GB y en-US si ambas son específicas de esa región.
  • En el caso de los idiomas con un solo dialecto estándar, no es necesario agregar la región. En algunas situaciones resulta razonable usar una etiqueta general, por ejemplo, marcar los activos con ja en lugar de ja-JP.

En ocasiones no es necesario localizar todos los recursos.

  • En el caso de los recursos que se ofrecen en todos los idiomas, como las cadenas de la interfaz de usuario, puedes marcarlos con su idioma correspondiente y asegurarte de que todos estos recursos están en el idioma predeterminado. No es necesario especificar un recurso independiente de idioma (no marcado con un idioma).
  • En los recursos incluidos en un subconjunto del conjunto completo de idiomas de la aplicación (localización parcial), especifica el conjunto de los idiomas de los activos y asegúrate de que todos estos recursos están en el idioma predeterminado. Windows selecciona el mejor idioma posible para el usuario según el orden de preferencia de los idiomas que habla el usuario. Por ejemplo, puede ser que no toda la interfaz de usuario de una aplicación se localice en catalán si la aplicación tiene un conjunto de recursos completo en español. Para los usuarios que hayan establecido como idioma de preferencia el catalán y después el español, los recursos no disponibles en catalán aparecerán en español.
  • En el caso de los recursos que tengan excepciones específicas en algunos idiomas y que en el resto de idiomas se asignen a un recurso común, el recurso que debería usarse para todos los idiomas debería marcarse con la etiqueta de idioma predeterminado 'und'. Windows interpreta la etiqueta de idioma 'und' de manera similar a '*', en el sentido de que establece la correspondencia con el idioma de la aplicación principal después de cualquier otra coincidencia específica. Por ejemplo, si algunos recursos (como el ancho de un elemento) son distintos para finés pero los demás recursos son iguales para todos los idiomas, el recurso de finés debería marcarse con la etiqueta de idioma finés y el resto debería marcarse con 'und'.
  • En el caso de los recursos que se basan en el script de un idioma y no en el idioma, como la fuente o el alto del texto, usa la etiqueta de idioma indeterminado con un script especificado: 'und-<script>'. Por ejemplo, para las fuentes latinas usa und-Latn\fonts.css y para las fuentes cirílicas usa und-Cryl\fonts.css.

Paso 5: Crea la lista de idiomas de la aplicación.

En tiempo de ejecución, el sistema determina las preferencias de idioma del usuario admitidas por la aplicación, según el manifiesto, y crea una lista de idiomas de la aplicación. Usa esta lista para determinar los idiomas en los que debería estar la aplicación. La lista determina los idiomas que se usan para los números, horas, fechas, recursos y demás componentes del sistema y la aplicación. Por ejemplo, el Sistema de administración de recursos (Windows.ApplicationModel.Resources, Windows.ApplicationModel.Resources.Core y el espacio de nombres WinJS.Resources) cargan recursos de interfaz de usuario de acuerdo con el idioma de la aplicación. Windows.Globalization también elige formatos en función de la lista de idiomas de la aplicación. La lista de idiomas de la aplicación está disponible mediante el uso de Windows.Globalization.ApplicationLanguages.languages.

Es difícil establecer la coincidencia de idiomas en los recursos. Te recomendamos que dejes que Windows establezca la coincidencia porque hay muchos componentes opcionales en una etiqueta de idioma que pueden influir en la prioridad de la coincidencia y que se pueden encontrar en la práctica.

Algunos de los componentes opcionales de una etiqueta de idioma son:

  • Script para idiomas de script de supresión. Por ejemplo, en-Latn-US coincide con en-US.
  • Región. Por ejemplo, en-US coincide con en.
  • Variantes. Por ejemplo, de-DE-1996 coincide con de-DE.
  • -x y otras extensiones. Por ejemplo, en-US-x-Pirate coincide con en-US.

También hay muchos componentes en una etiqueta de idioma que no tienen el formato xx o xx-yy, y no todos coinciden.

  • zh-Hant no coincide con zh-Hans.

Windows da prioridad a la coincidencia de idiomas entendida de manera estándar. Por ejemplo, en-US coincide, por orden de prioridad, con en-US, en, en-GB, etc.

  • Windows también establece la coincidencia regional. Por ejemplo, en-US coincide con en-US, luego con en y luego con en-*.
  • Windows tiene datos adicionales para establecer la coincidencia de afinidad en una región, como la región principal de un idioma. Por ejemplo, fr-FR es una coincidencia mejor para fr-BE que fr-CA.
  • Si dependes de las API de Windows, podrás obtener de manera gratuita cualquier mejora en la coincidencia de idioma de Windows.

La coincidencia con el primer idioma de la lista se produce antes de la coincidencia con el segundo, incluso para otras variantes regionales. Por ejemplo, se prefiere un recurso para en-GB sobre fr-CA si el idioma de la aplicación es en-US. Solo se elige un recurso para fr-CA si no hay recursos para una forma de en.

La lista de idiomas de la aplicación está configurada como la variante regional del usuario, incluso si es diferente de la variante regional que la aplicación proporcionó. Por ejemplo, si el usuario habla en-GB, pero la aplicación admite en-US, la lista de idiomas de la aplicación incluye en-GB. Esto garantiza que las fechas, las horas y los números tengan un formato más cercano a las expectativas del usuario (en-GB), pero los recursos de la interfaz de usuario siguen cargándose (debido a la coincidencia de idiomas) en el idioma admitido por la aplicación (en-US).

La lista de idiomas de la aplicación está compuesta de los siguientes elementos:

  1. (Opcional) Sobrescritura del idioma principalPrimaryLanguageOverride es una sencilla configuración de sobrescritura para las aplicaciones que ofrecen a los usuarios su propia elección de idioma independiente, o bien para las aplicaciones con un motivo fundado para sobrescribir las opciones de idioma predeterminado. Para más información, echa un vistazo a la muestra de recursos de la aplicación y localización.
  2. Idiomas del usuario compatibles con la aplicación Se trata de una lista de las preferencias de idioma del usuario ordenada por preferencia de idioma. Está filtrada según la lista de idiomas compatibles en el manifiesto de la aplicación. Si los idiomas del usuario se filtran en función de aquellos que la aplicación admite, se mantendrá la coherencia en los kits de desarrollo de software (SDK), las bibliotecas de clases, los paquetes de marcos dependientes y la aplicación.
  3. En caso de estar vacías las opciones 1 y 2, se usará el idioma predeterminado o el primer idioma compatible con la aplicación Si el usuario no habla ninguno de los idiomas compatibles con la aplicación, el idioma de aplicación que se seleccione será el primer idioma que la aplicación admita.

Consulta la sección Comentarios debajo de los ejemplos.

Paso 6: Establece el encabezado Accept Language HTTP.

Las solicitudes HTTP realizadas desde aplicaciones de la Tienda Windows y aplicaciones de escritorio en solicitudes web típicas y XMLHttpRequest (XHR) usan el encabezado estándar Accept-Language HTTP. De manera predeterminada, el encabezado HTTP se configura como las preferencias de idioma del usuario (en el orden de preferencia del usuario) como se especifica en Panel de control > Reloj, idioma y región > Idioma. Cada idioma de la lista se expande aún más para incluir valores independientes del idioma y una ponderación (q). Por ejemplo, la lista de idiomas de un usuario de fr-FR y en-US da como resultado un encabezado Accept-Language HTTP de fr-FR, fr, en-US, en ("fr-FR,fr;q=0.8,en-US;q=0.5,en;q=0.3").

Paso 7: Usa las API en el espacio de nombres Windows.Globalization.

Generalmente, los elementos de API del espacio de nombres Windows.Globalization usan la lista de idiomas de la aplicación para determinar el idioma. Si ninguno tiene un formato que coincida, se usa la configuración regional del usuario, que es la misma que se usa para el reloj del sistema. La configuración regional del usuario está disponible en Panel de control > Reloj, idioma y región > Región: Cambiar formatos de fecha, hora o número. Las API de Windows.Globalization también admiten una invalidación para especificar una lista de idiomas que usar en lugar de la lista de idiomas de la aplicación.

Windows.Globalization también tiene un objeto Language proprocionado como objeto auxiliar. Permite que las aplicaciones inspeccionen detalles acerca del idioma como el script del idioma, el nombre para mostrar y el nombre nativo.

Paso 8: Usa la región geográfica cuando sea conveniente.

En lugar del idioma, debes usar la configuración de la región geográfica de la casa del usuario para elegir qué contenido se le debe mostrar. Por ejemplo, una aplicación de noticias probablemente quiera establecer que, de manera predeterminada, se muestre el contenido desde la ubicación del hogar de un usuario, que se establece cuando se instala Windows y está disponible en el panel de control Región. Para recuperar la configuración de la región del hogar del usuario actual, usa Windows.System.UserProfile.GlobalizationPreferences.HomeGeographicRegion.

Windows.Globalization también tiene un objeto GeographicRegion proprocionado como objeto auxiliar. Permite que las aplicaciones inspeccionen detalles acerca de una región particular, como su nombre para mostrar, nombre nativo y monedas en uso.

Observaciones

La siguiente tabla contiene ejemplos de lo que el usuario vería en la UI de la aplicación bajo diversos parámetros de configuración de idioma y región.

Idiomas admitidos por la aplicación (definidos en el manifiesto) Preferencias de idioma del usuario (establecidas en el Panel de control) Invalidación de idioma principal de la aplicación (opcional) Idiomas de la aplicación Lo que el usuario ve en la aplicación
Inglés (Reino Unido) (predeterminado); Alemán (Alemania) Inglés (Reino Unido) ninguno Inglés (Reino Unido) UI: Inglés (Reino Unido) Fechas/horas/números: Inglés (Reino Unido)
Alemán (Alemania) (predeterminado); Francés (Francia); Italiano (Italia) Francés (Austria) (ninguno) Francés (Austria) UI: francés (Francia) (reserva desde francés [Austria]) Fechas/horas/números: francés (Francia)
Inglés (Estados Unidos) (predeterminado); Francés (Francia); Inglés (Reino Unido) Inglés (Canadá); Francés (Canadá) ninguno Inglés (Canadá); Francés (Canadá) UI: Inglés (Estados Unidos) (reserva desde Inglés [Canadá]) Fechas/horas/números: Inglés (Canadá)
Español (España) (predeterminado); Español (México); Español (Latinoamérica); Portugués (Brasil) Inglés (Estados Unidos) ninguno Español (España) UI: Español (España) (usa el valor predeterminado dado que no existe reserva disponible para el inglés) Fechas/horas/números Español (España)
Catalán (predeterminado); Español (España); Francés (Francia) Catalán; Francés (Francia) ninguno Catalán; Francés (Francia) UI: principalmente catalán y algo de francés (Francia) porque no todas las cadenas están en catalán Fechas/horas/números: catalán
Inglés (Reino Unido) (predeterminado); Francés (Francia); Alemán (Alemania) Alemán (Alemania); Inglés (Reino Unido) Inglés (Reino Unido) (elegido por el usuario en la interfaz de usuario de la aplicación) Inglés (Reino Unido); Alemán (Alemania) UI: inglés (Reino Unido) (invalidación de idioma) Fechas/horas/números: inglés (Reino Unido)