Comment le système de gestion des ressources met en correspondance et sélectionne les ressources

Quand une ressource est requise, plusieurs candidats sont susceptibles de correspondre, avec plus ou moins d’exactitude, au contexte de ressource actuel. Le système de gestion des ressources analyse tous les candidats et identifie le meilleur à retourner. Pour ce faire, prenez tous les qualificateurs en considération pour classer tous les candidats.

Dans ce processus de classement, les différents qualificateurs ont des priorités différentes : la langue a le plus d’impact sur le classement global, suivi du contraste, puis de l’échelle, et ainsi de suite. Pour chaque qualificateur, les qualificateurs candidats sont comparés à la valeur de qualificateur de contexte pour déterminer la qualité de la correspondance. La façon dont la comparaison est effectuée dépend du qualificateur.

Pour plus d’informations sur la façon dont la correspondance des balises de langue est effectuée, consultez Comment le système de gestion des ressources correspond aux balises de langue.

Pour certains qualificateurs, tels que l’échelle et le contraste, il existe toujours un degré minimal de correspondance. Par exemple, un candidat qualifié pour « scale-100 » correspond à un contexte de « scale-400 » à un certain degré, mais pas aussi bien qu’un candidat qualifié pour « scale-200 » ou (pour une correspondance parfaite) « scale-400 ».

Toutefois, pour d’autres qualificateurs, tels que la langue ou la région d’origine, il est possible d’avoir une comparaison sans correspondance (ainsi que des degrés de correspondance). Par exemple, un candidat qualifié pour la langue « en-US » est une correspondance partielle pour un contexte « en-GB », mais un candidat qualifié de « fr » n’est pas une correspondance du tout. De même, un candidat qualifié pour la région d’origine en tant que « 155 » (Europe occidentale) correspond à un contexte pour un utilisateur disposant d’un paramètre « FR » un peu bien, mais un candidat qualifié de « US » ne correspond pas du tout.

Lorsqu’un candidat est évalué, s’il existe une comparaison de non-correspondance pour un qualificateur, ce candidat obtiendra un classement global sans correspondance et ne sera pas sélectionné. De cette façon, les qualificateurs de priorité supérieure peuvent avoir le plus grand poids dans la sélection de la meilleure correspondance, mais même un qualificateur de faible priorité peut éliminer un candidat en raison d’une non-correspondance.

Un candidat est neutre par rapport à un qualificateur s’il n’est pas marqué pour ce qualificateur du tout. Pour tout qualificateur, un candidat neutre est toujours une correspondance pour la valeur de qualificateur de contexte, mais seulement avec une qualité inférieure de correspondance que tout candidat marqué pour ce qualificateur et a un certain degré de correspondance (exact ou partiel). Par exemple, si nous avons des candidats qualifiés pour « en-US », « en », « fr », et également un candidat neutre en langue, puis pour un contexte avec une valeur de qualificateur de langue « en-GB », les candidats sont classés dans l’ordre suivant : « en », « en - US », neutre et « fr ». Dans ce cas, « fr » ne correspond pas du tout, tandis que les autres candidats correspondent à un certain degré.

Le processus de classement global commence par évaluer les candidats par rapport au qualificateur de priorité la plus élevée, qui est la langue. Les non-correspondances sont éliminées. Les candidats restants sont classés par rapport à leur qualité de correspondance pour la langue. S’il existe des liens, le qualificateur de priorité suivante, contraste, est considéré, en utilisant la qualité de correspondance pour le contraste pour différencier les candidats liés. Après contraste, le qualificateur d’échelle est utilisé pour différencier les liens restants, et ainsi de suite, par autant de qualificateurs que nécessaire pour arriver à un classement bien classé.

Si tous les candidats sont supprimés de la considération en raison de qualificateurs qui ne correspondent pas au contexte, le chargeur de ressources passe par une deuxième passe, recherchant un candidat par défaut à afficher. Les candidats par défaut sont déterminés lors de la création du fichier PRI et doivent s’assurer qu’il existe toujours un candidat à sélectionner pour n’importe quel contexte d’exécution. Si un candidat a des qualificateurs qui ne correspondent pas et ne sont pas une valeur par défaut, ce candidat de ressource est levée définitivement hors de considération.

Pour tous les candidats aux ressources toujours en considération, le chargeur de ressources examine la valeur de qualificateur de contexte de priorité la plus élevée et choisit celui qui a la meilleure correspondance ou le meilleur score par défaut. Toute correspondance réelle est considérée comme meilleure qu’un score par défaut.

S’il existe un lien, la valeur du qualificateur de contexte de priorité suivante est inspectée et le processus continue jusqu’à ce que la meilleure correspondance soit trouvée.

Exemple de choix d’un candidat à la ressource

Tenez compte de ces fichiers.

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

Supposons qu’il s’agit des paramètres dans le contexte actuel.

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

Le système de gestion des ressources élimine trois des fichiers, car le contraste élevé et la langue allemande ne correspondent pas au contexte défini par les paramètres. Cela laisse ces candidats.

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

Pour les candidats restants, le système de gestion des ressources utilise le qualificateur de contexte de priorité la plus élevée, qui est la langue. Les ressources anglaises sont une correspondance plus étroite que celle des français, car l’anglais est répertorié avant le français dans les paramètres.

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

Ensuite, le système de gestion des ressources utilise le qualificateur de contexte de priorité la plus élevée suivante, mise à l’échelle. Il s’agit donc de la ressource retournée.

en/images/logo.scale-400.jpg

Vous pouvez utiliser la méthode NamedResource.ResolveAll avancée pour récupérer tous les candidats dans l’ordre dans lequel ils correspondent aux paramètres de contexte. Pour l’exemple que nous venons de parcourir, ResolveAll retourne les candidats dans cet ordre.

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

Exemple de production d’un choix de secours

Tenez compte de ces fichiers.

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

Supposons qu’il s’agit des paramètres dans le contexte actuel.

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

Tous les fichiers sont éliminés, car ils ne correspondent pas au contexte. Nous entrerons donc une passe par défaut, où la valeur par défaut (voir Compiler les ressources manuellement avec MakePri.exe) lors de la création du fichier PRI était celle-ci.

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

Cela laisse toutes les ressources qui correspondent à l’utilisateur actuel ou à la valeur par défaut.

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

Le système de gestion des ressources utilise le qualificateur de contexte de priorité la plus élevée, la langue, pour retourner la ressource nommée avec le score le plus élevé.

de/images/contrast-standard/logo.jpg

API importantes