Cómo el sistema de administración de recursos compara y elige recursos

Cuando se solicita un recurso, podría haber varios candidatos que coincidan hasta cierto punto con el contexto de recursos actual. El sistema de administración de recursos analizará todos los candidatos y determinará el mejor candidato para devolver. Esto se hace tomando en consideración todos los calificadores para clasificar a todos los candidatos.

En este proceso de clasificación, los distintos calificadores reciben prioridades diferentes: el idioma tiene el mayor impacto en la clasificación general, seguido del contraste, la escala, etc. Para cada calificador, los calificadores candidatos se comparan con el valor del calificador de contexto para determinar la calidad de la coincidencia. La forma en que se realiza la comparación depende del calificador.

Para obtener detalles específicos sobre cómo se realiza la coincidencia de etiquetas de idioma, consulte Cómo el sistema de administración de recursos coincide con las etiquetas de idioma.

Para algunos calificadores, como la escala y el contraste, siempre hay un grado mínimo de coincidencia. Por ejemplo, un candidato calificado para "escala-100" coincide con un contexto de "escala-400" a cierto grado, aunque no así como un candidato calificado para "scale-200" o (para una coincidencia perfecta) "scale-400".

Sin embargo, para otros calificadores, como el idioma o la región principal, es posible tener una comparación no coincidente (así como grados de coincidencia). Por ejemplo, un candidato calificado para el idioma como "en-US" es una coincidencia parcial para un contexto de "en-GB", pero un candidato calificado como "fr" no es una coincidencia en absoluto. Del mismo modo, un candidato calificado para la región principal como "155" (Europa occidental) coincide con un contexto para un usuario con una configuración de región principal de "FR" algo bien, pero un candidato calificado como "EE. UU." no coincide en absoluto.

Cuando se evalúa un candidato, si hay una comparación no coincidente para cualquier calificador, ese candidato obtendrá una clasificación no coincidente general y no se seleccionará. De este modo, los calificadores de mayor prioridad pueden tener el mayor peso en la selección de la mejor coincidencia, pero incluso un calificador de prioridad baja puede eliminar un candidato debido a una no coincidencia.

Un candidato es neutro en relación con un calificador si no está marcado para ese calificador en absoluto. Para cualquier calificador, un candidato neutro siempre es una coincidencia para el valor del calificador de contexto, pero solo con una menor calidad de coincidencia que cualquier candidato marcado para ese calificador y tiene algún grado de coincidencia (exacto o parcial). Por ejemplo, si tenemos candidatos calificados para "en-US", "en", "fr" y también un candidato independiente del idioma, para un contexto con un valor de calificador de idioma de "en-GB", los candidatos se clasificarán en el orden siguiente: "en", "en-US", neutral y "fr". En este caso, "fr" no coincide en absoluto, mientras que los demás candidatos coinciden con algún grado.

El proceso de clasificación general comienza evaluando los candidatos en relación con el calificador de prioridad más alta, que es el idioma. Se eliminan las no coincidencias. Los candidatos restantes se clasifican en relación con su calidad de coincidencia para el idioma. Si hay algún vínculo, se considera el siguiente calificador de prioridad más alta, el contraste, utilizando la calidad de coincidencia para el contraste para diferenciar entre los candidatos vinculados. Después del contraste, el calificador de escala se usa para diferenciar los vínculos restantes, etc., a través de tantos calificadores como sea necesario para llegar a una clasificación bien ordenada.

Si todos los candidatos se quitan de la consideración debido a los calificadores que no coinciden con el contexto, el cargador de recursos pasa por un segundo paso, buscando que se muestre un candidato predeterminado. Los candidatos predeterminados se determinan durante la creación del archivo PRI y son necesarios para asegurarse de que siempre hay algún candidato para seleccionar para cualquier contexto en tiempo de ejecución. Si un candidato tiene calificadores que no coinciden y no son un valor predeterminado, ese candidato de recursos se produce permanentemente fuera de consideración.

Para todos los candidatos de recursos que siguen teniendo en cuenta, el cargador de recursos examina el valor de calificador de contexto de prioridad más alta y elige el que tiene la mejor coincidencia o la mejor puntuación predeterminada. Cualquier coincidencia real se considera mejor que una puntuación predeterminada.

Si hay un empate, se inspecciona el valor del calificador de contexto de prioridad siguiente y el proceso continúa hasta que se encuentre la mejor coincidencia.

Ejemplo de elección de un candidato de recursos

Tenga en cuenta estos archivos.

en/images/logo.scale-400.jpg
en/images/logo.scale-200.jpg
en/images/logo.scale-100.jpg  
fr/images/logo.scale-100.jpg
fr/images/contrast-high/logo.scale-400.jpg
fr/images/contrast-high/logo.scale-100.jpg
de/images/logo.jpg

Y supongamos que se trata de la configuración en el contexto actual.

Application language: en-US; fr-FR;
Scale: 400
Contrast: Standard

El sistema de administración de recursos elimina tres de los archivos porque el contraste alto y el idioma alemán no coinciden con el contexto definido por la configuración. Eso deja a estos candidatos.

en/images/logo.scale-400.jpg
en/images/logo.scale-200.jpg
en/images/logo.scale-100.jpg  
fr/images/logo.scale-100.jpg

Para los candidatos restantes, el sistema de administración de recursos usa el calificador de contexto de prioridad más alta, que es el idioma. Los recursos en inglés son una coincidencia más cercana que los franceses porque el inglés aparece antes del francés en la configuración.

en/images/logo.scale-400.jpg
en/images/logo.scale-200.jpg
en/images/logo.scale-100.jpg  

A continuación, el sistema de administración de recursos usa el calificador de contexto de prioridad más alta siguiente, escala. Por lo tanto, este es el recurso devuelto.

en/images/logo.scale-400.jpg

Puede usar el método Advanced NamedResource.ResolveAll para recuperar todos los candidatos en el orden en que coincidan con la configuración de contexto. En el ejemplo que acabamos de recorrer, ResolveAll devuelve candidatos en este orden.

en/images/logo.scale-400.jpg
en/images/logo.scale-200.jpg
en/images/logo.scale-100.jpg  
fr/images/logo.scale-100.jpg

Ejemplo de generación de una opción de reserva

Tenga en cuenta estos archivos.

en/images/logo.scale-400.jpg
en/images/logo.scale-200.jpg
en/images/logo.scale-100.jpg  
fr/images/contrast-standard/logo.scale-400.jpg
fr/images/contrast-standard/logo.scale-100.jpg
de/images/contrast-standard/logo.jpg

Y supongamos que se trata de la configuración en el contexto actual.

User language: de-DE;
Scale: 400
Contrast: High

Todos los archivos se eliminan porque no coinciden con el contexto. Por lo tanto, especificamos un pase predeterminado, donde el valor predeterminado (consulte Compilar recursos manualmente con MakePri.exe) durante la creación del archivo PRI fue este.

Language: fr-FR;
Scale: 400
Contrast: Standard

Esto deja todos los recursos que coinciden con el usuario actual o el valor predeterminado.

fr/images/contrast-standard/logo.scale-400.jpg
fr/images/contrast-standard/logo.scale-100.jpg
de/images/contrast-standard/logo.jpg

El sistema de administración de recursos usa el calificador de contexto de prioridad más alta, el idioma, para devolver el recurso con nombre con la puntuación más alta.

de/images/contrast-standard/logo.jpg

API importantes