Ajusta tus recursos al idioma, escala, alto contraste y otros criterios

En este tema se explica el concepto general de calificadores de recursos, cómo usarlos y la finalidad de cada uno de los nombres de calificador. Consulte ResourceContext.QualifierValues para obtener una tabla de referencia de todos los valores de calificador posibles.

La aplicación puede cargar activos y recursos adaptados a contextos en tiempo de ejecución, como el idioma de visualización, el contraste alto, el factor de escala de pantalla y muchos otros. La forma de hacerlo es asignar un nombre a las carpetas o archivos de los recursos para que coincidan con los nombres de calificador y los valores de calificador que corresponden a esos contextos. Por ejemplo, puede que quieras que la aplicación cargue un conjunto diferente de recursos de imagen en modo de contraste alto.

Para más información sobre la propuesta de valor de localizar la aplicación, consulta Globalización y localización.

Nombre del calificador, valor del calificador y calificador

Un nombre de calificador es una clave que se asocia a un conjunto de valores de calificador. Aquí están el nombre del calificador y los valores del calificador para el contraste.

Contexto Nombre del calificador Valores de calificador
Configuración de contraste alto contraste estándar, alto, negro, blanco

Se combina un nombre de calificador con un valor de calificador para formar un calificador. <qualifier name>-<qualifier value> es el formato de un cualificador. contrast-standard es un ejemplo de calificador.

Por lo tanto, para contraste alto, el conjunto de calificadores es contrast-standard, contrast-high, contrast-blacky contrast-white. Los nombres de calificador y los valores de calificador no distinguen mayúsculas de minúsculas. Por ejemplo, contrast-standard y Contrast-Standard son el mismo calificador.

Uso de calificadores en nombres de carpeta

Este es un ejemplo de uso de calificadores para asignar nombres a carpetas que contienen archivos de recursos. Use calificadores en los nombres de las carpetas si tiene varios archivos de activos por calificador. De este modo, se establece el calificador una vez en el nivel de carpeta y el calificador se aplica a todo lo que hay dentro de la carpeta.

\Assets\Images\contrast-standard\<logo.png, and other image files>
\Assets\Images\contrast-high\<logo.png, and other image files>
\Assets\Images\contrast-black\<logo.png, and other image files>
\Assets\Images\contrast-white\<logo.png, and other image files>

Si asigna un nombre a las carpetas como en el ejemplo anterior, la aplicación usa la configuración de contraste alto para cargar archivos de recursos de la carpeta denominada para el calificador adecuado. Por lo tanto, si la configuración es Negro de contraste alto, los archivos de recursos de la \Assets\Images\contrast-black carpeta se cargan. Si la configuración es None (es decir, el equipo no está en modo de contraste alto), los archivos de recursos de la \Assets\Images\contrast-standard carpeta se cargan.

Utilice calificadores en nombres de archivo

En lugar de crear y asignar nombres a carpetas, puede usar un calificador para asignar un nombre a los propios archivos de recursos. Es posible que prefiera hacerlo si solo tiene un archivo de recursos por calificador. Este es un ejemplo.

\Assets\Images\logo.contrast-standard.png
\Assets\Images\logo.contrast-high.png
\Assets\Images\logo.contrast-black.png
\Assets\Images\logo.contrast-white.png

El archivo cuyo nombre contiene el calificador más adecuado para la configuración es el que se carga. Esta lógica coincidente funciona de la misma manera para los nombres de archivo que para los nombres de carpeta.

Hacer referencia a un recurso de cadena o imagen por nombre

Consulte los temas siguientes para obtener más información sobre cómo hacer referencia a un recurso de cadena o imagen por nombre:

Coincidencias reales y neutrales del clasificador

No es necesario proporcionar un archivo de recursos para cada valor de calificador. Por ejemplo, si encuentra que solo necesita un recurso visual para contraste alto y otro para el contraste estándar, puede asignar un nombre a esos recursos como este.

\Assets\Images\logo.contrast-high.png
\Assets\Images\logo.png

El primer nombre de archivo contiene el calificador contrast-high. Ese calificador es una coincidencia real para cualquier configuración de contraste alto cuando el contraste alto está activado. En otras palabras, es una coincidencia cercana, por lo que es preferible. Solo se puede producir una coincidencia real si el calificador contiene un valor real, como este lo hace. En este caso, high es un valor real para contrast.

El archivo denominado logo.png no tiene ningún calificador de contraste en él. La ausencia de un calificador es un valor neutro . Si no se puede encontrar ninguna coincidencia preferida, el valor neutro sirve como coincidencia de reserva. En este ejemplo, si el contraste alto está desactivado, no hay ninguna coincidencia real. La coincidencia neutra es la mejor coincidencia que se puede encontrar y, por tanto, se carga el recurso logo.png .

Si tuviera que cambiar el nombre de logo.png a logo.contrast-standard.png, el nombre de archivo contendrá un valor de calificador real. Con el contraste bajo, habría una coincidencia real con logo.contrast-standard.png, y ese es el archivo de activos que se cargaría. Por lo tanto, se cargarían los mismos archivos, en las mismas condiciones, pero debido a coincidencias diferentes.

Si solo necesita un conjunto de recursos para contraste alto y otro para el contraste estándar, puede usar nombres de carpeta en lugar de nombres de archivo. En este caso, si se omite completamente el nombre de la carpeta, se obtiene la coincidencia neutral.

\Assets\Images\contrast-high\<logo.png, and other images to load when high contrast theme is not None>
\Assets\Images\<logo.png, and other images to load when high contrast theme is None>

Para obtener más información sobre cómo funciona la coincidencia de calificadores, consulte Administración de recursos con MRT Core.

Varios calificadores

Puede combinar calificadores en nombres de carpeta y archivo. Por ejemplo, es posible que quieras que la aplicación cargue los recursos de imagen cuando el modo de contraste alto esté activado y el factor de escala de pantalla sea 400. Una manera de hacerlo es con carpetas anidadas.

\Assets\Images\contrast-high\scale-400\<logo.png, and other image files>

Para que logo.png y los demás archivos se carguen, la configuración debe coincidir con ambos calificadores.

Otra opción es combinar varios calificadores en un nombre de carpeta.

\Assets\Images\contrast-high_scale-400\<logo.png, and other image files>

En un nombre de carpeta, se combinan varios calificadores separados con un carácter de subrayado. <qualifier1>[_<qualifier2>...] es el formato.

Puede combinar varios calificadores en un nombre de archivo con el mismo formato.

\Assets\Images\logo.contrast-high_scale-400.png

Dependiendo de las herramientas y el flujo de trabajo que use para la creación de recursos, o de lo que encuentre más fácil de leer o administrar, puede elegir una única estrategia de nomenclatura de nombres para todos los atributos, o puede combinar diferentes estrategias para varios atributos.

Forma Alternativa

El alternateform calificador se usa para proporcionar una forma alternativa de un recurso para algún propósito especial. Normalmente, esto solo lo usan los desarrolladores de aplicaciones japonesas para proporcionar una cadena furigana para la que el valor msft-phonetic está reservado (consulte la sección "Compatibilidad con Furigana para cadenas japonesas que se pueden ordenar" en Preparación para la localización).

Cualquiera de su sistema de destino o su aplicación debe proporcionar un valor contra el cual se comparen los calificadores alternateform. No use el prefijo msft- para sus valores de calificador personalizados alternateform.

Configuración

Es poco probable que necesite el nombre del configuration cualificador. Se puede usar para especificar recursos que solo son aplicables a un entorno de desarrollo determinado, como los recursos de solo prueba.

El configuration calificador se usa para cargar un recurso que mejor coincida con el valor de la MS_CONFIGURATION_ATTRIBUTE_VALUE variable de entorno. Por lo tanto, puede establecer la variable en el valor de cadena que se ha asignado a los recursos pertinentes, por ejemplo designer, o test.

Contraste

El contrast calificador se usa para proporcionar recursos que mejor coincidan con la configuración de contraste alto.

DXFeatureLevel

Es poco probable que necesite el nombre del calificador dxfeaturelevel. Se diseñó para usarse con activos de juego de Direct3D, con el fin de que los recursos de nivel inferior se cargaran para coincidir con una configuración de hardware de nivel inferior específica de la época. Pero la prevalencia de esa configuración de hardware es ahora tan baja que se recomienda no usar este calificador.

Región de origen

El homeregion calificador corresponde a la configuración del usuario para el país o región. Representa la ubicación principal del usuario. Los valores incluyen cualquier etiqueta de región BCP-47 válida. Es decir, cualquier código de región de dos letras ISO 3166-1 alfa-2 , además del conjunto de códigos geográficos numéricos de tres dígitos ISO 3166-1 para regiones compuestas (véase composición de la División Estadística de las Naciones Unidas M49 de códigos de región). Los códigos para "Selecciones económicas y otras agrupaciones" no son válidos.

Lenguaje

Un language calificador corresponde a la configuración del idioma de visualización. Los valores incluyen cualquier etiqueta de idioma BCP-47 válida. Para obtener una lista de idiomas, consulte el registro de subetiquetas de idiomas de IANA.

Si tu aplicación admite diferentes idiomas de presentación, mueve los literales de cadena fuera del código o del markup y a los archivos de recursos (.resw). Para ver un tutorial completo, consulte Localización de cadenas en el manifiesto de paquete de la interfaz de usuario y la aplicación.

Normalmente, utilizas un calificador language para nombrar las carpetas que contienen tus archivos de recursos (.resw).

\Strings\language-en\Resources.resw
\Strings\language-ja\Resources.resw

Puede omitir la language- parte de un language calificador (es decir, el nombre del calificador). No puede hacerlo con los otros tipos de calificadores; y solo puede hacerlo en un nombre de carpeta.

\Strings\en\Resources.resw
\Strings\ja\Resources.resw

En lugar de asignar nombres a carpetas, puede usar language calificadores para asignar un nombre a los propios archivos de recursos.

\Strings\Resources.language-en.resw
\Strings\Resources.language-ja.resw

Consulte Localizar las cadenas de interfaz de usuario para obtener más información sobre cómo hacer que la aplicación sea localizable mediante recursos de cadena y cómo hacer referencia a un recurso de cadena en la aplicación.

Dirección de maquetación

Un layoutdirection calificador corresponde a la dirección de disposición del idioma de visualización. Por ejemplo, es posible que una imagen tenga que reflejarse para un idioma de derecha a izquierda, como árabe o hebreo. Los paneles de diseño y las imágenes de la interfaz de usuario responderán a la dirección del diseño correctamente si establece su propiedad FlowDirection (consulte Ajustar el diseño y las fuentes y admitir RTL). Sin embargo, el layoutdirection calificador es para casos en los que un volteo simple no es adecuado, y le permite responder a la direccionalidad del orden de lectura específico y la alineación del texto de maneras más generales.

Escala

Windows selecciona automáticamente un factor de escala para cada pantalla en función de su PPP (puntos por pulgada) y la distancia de visualización del dispositivo. Consulte Píxeles efectivos y factor de escala. Debes crear tus imágenes con varios tamaños recomendados (al menos 100, 200 y 400) para que Windows pueda elegir el tamaño perfecto o puede usar el tamaño más cercano y escalarlo. Para que Windows pueda identificar qué archivo físico contiene el tamaño correcto de la imagen para el factor de escala de visualización, se usa un scale calificador. La escala de un recurso coincide con el valor de DisplayInformation.ResolutionScale o el siguiente recurso a mayor escala.

Este es un ejemplo de cómo establecer el calificador en el nivel de carpeta.

\Assets\Images\scale-100\<logo.png, and other image files>
\Assets\Images\scale-200\<logo.png, and other image files>
\Assets\Images\scale-400\<logo.png, and other image files>

Y este ejemplo lo establece en el nivel de archivo.

\Assets\Images\logo.scale-100.png
\Assets\Images\logo.scale-200.png
\Assets\Images\logo.scale-400.png

Para obtener información sobre cómo calificar un recurso para scale y targetsize, consulte Calificar un recurso de imagen para targetsize.

Tamaño objetivo

El targetsize calificador se usa principalmente para especificar iconos de asociación de tipo de archivo o iconos de protocolo que se mostrarán en Explorador de archivos. El valor del calificador representa la longitud del lado de una imagen cuadrada en píxeles en bruto (físicos). El recurso cuyo valor coincide con el valor de la vista en el Explorador de archivos se carga; o el recurso con el siguiente valor más alto en ausencia de una coincidencia exacta.

Puede definir recursos que representen varios tamaños del valor calificador de targetsize para el icono de la aplicación (/Assets/Square44x44Logo.png) en la pestaña Recursos visuales del diseñador del manifiesto del paquete de la aplicación.

Para obtener información sobre cómo calificar un recurso para scale y targetsize, consulte Calificar un recurso de imagen para targetsize.

Tema

El theme calificador se usa para proporcionar recursos que mejor se ajusten a la configuración predeterminada del modo de la aplicación, o a la anulación de la aplicación mediante Application.RequestedTheme.

Tema claro de Shell y recursos no revestidos

La Actualización de mayo de 2019 de Windows 10 introdujo un nuevo tema "ligero" para el Shell de Windows. Como resultado, algunos recursos de aplicación que se mostraron anteriormente en un fondo oscuro ahora se mostrarán en un fondo claro. En el caso de las aplicaciones que proporcionan recursos alternativos no estandarizados para la barra de tareas y los cambiadores de ventana (Alt+Pestaña, Vista de tareas, etc.), debe comprobar que tienen un contraste aceptable en un fondo claro.

Proporcionar recursos específicos del tema claro

Las aplicaciones que quieran proporcionar un recurso personalizado para el tema claro del shell pueden usar un nuevo calificador alternativo de recursos: altform-lightunplated. Este calificador refleja el calificador altform-unplated existente.

Consideraciones de nivel inferior

Las aplicaciones no deben usar el calificador theme-light con altform-unplated. Esto provocará un comportamiento impredecible en RS5 y versiones anteriores de Windows debido a la forma en que se cargan los recursos para la barra de tareas. En versiones anteriores de las ventanas, la versión de theme-light puede usarse incorrectamente. El altform-lightunplated calificador evita este problema.

Comportamiento de compatibilidad

Para la compatibilidad con versiones anteriores, Windows incluye lógica para detectar iconos monocromáticos y comprobar si contrasta con el fondo previsto. Si el icono no cumple los requisitos de contraste, Windows buscará una versión en blanco de contraste del recurso. Si no está disponible, Windows volverá a usar la versión plateada del recurso.

API importantes