Como o Sistema de Gerenciamento de Recursos faz a correspondência dos recursos e os escolheHow the Resource Management System matches and chooses resources

Quando um recurso é solicitado, pode haver vários candidatos que correspondam em um certo grau ao contexto de recurso atual.When a resource is requested, there may be several candidates that match the current resource context to some degree. O Sistema de Gerenciamento de Recursos analisará todos os candidatos e determinará o melhor deles para ser retornado.The Resource Management System will analyze all of the candidates and determine the best candidate to return. Para isso, todos os qualificadores são levados em consideração para classificar todos os candidatos.This is done by taking all qualifiers into consideration to rank all of the candidates.

Nesse processo de classificação, os diferentes qualificadores recebem prioridades distintas: o idioma tem o maior impacto sobre a classificação geral, seguido por contraste, depois escala e assim por diante.In this ranking process, the different qualifiers are given different priorities: language has the greatest impact on the overall ranking, followed by contrast, then scale, and so on. Para cada qualificador, qualificadores candidatos são comparados com o valor do qualificador de contexto para determinar uma qualidade de correspondência.For each qualifier, candidate qualifiers are compared with the context qualifier value to determine a quality of match. A forma como a comparação é feita depende do qualificador.How the comparison is done depends upon the qualifier.

Para obter detalhes específicos sobre como a correspondência de marca de idioma é feita, consulte Como o Sistema de Gerenciamento de Recursos faz a correspondência de marcas de idioma.For specific details on how language tag matching is done, see How the Resource Management System matches language tags.

Para alguns qualificadores, como escala e contraste, há sempre um grau mínimo de correspondência.For some qualifiers, such as scale and contrast, there is always some minimal degree of match. Por exemplo, um candidato qualificado como "scale-100" corresponde em certo grau a um contexto "scale-400", embora não tanto quanto um candidato qualificado como "scale-200" ou, para uma correspondência perfeita, como "scale-400".For example, a candidate qualified for "scale-100" matches a context of "scale-400" to some small degree, albeit not as well as a candidate qualified for "scale-200" or (for a perfect match) "scale-400".

No entanto, para outros qualificadores, como idioma ou região de residência, é possível ter uma comparação de não correspondência (bem como graus de correspondência).For other qualifiers, however, such as language or home region, it is possible to have a non-match comparison (as well as degrees of matching). Por exemplo, um candidato qualificado para idioma como "en-US" é uma correspondência parcial de um contexto "en-GB", mas um candidato qualificado como "fr" não é uma correspondência.For example, a candidate qualified for language as "en-US" is a partial match for a context of "en-GB", but a candidate qualified as "fr" is not a match at all. Da mesma forma, um candidato qualificado para região de residência como "155" (Europa Ocidental) corresponde relativamente bem ao contexto de um usuário cuja configuração de região de residência seja "FR". Porém, um candidato qualificado como "US" não oferece nenhuma correspondência.Similarly, a candidate qualified for home region as "155" (Western Europe) matches a context for a user with a home region setting of "FR" somewhat well, but a candidate qualified as "US" does not match at all.

Quando um candidato é avaliado, se houver uma comparação de não correspondência para qualquer qualificador, esse candidato receberá uma classificação geral de não correspondência e não será selecionado.When a candidate is evaluated, if there is a non-match comparison for any qualifier, then that candidate will get an overall non-match ranking and will not be selected. Dessa forma, os qualificadores de maior prioridade podem ter a maior ponderação na seleção da melhor correspondência, mas até mesmo um qualificador de baixa prioridade pode eliminar um candidato devido a uma não correspondência.In this way, the higher-priority qualifiers can have the greatest weight in selecting the best match, but even a low-priority qualifier can eliminate a candidate due to a non-match.

Um candidato é neutro em relação a um qualificador quando ele não está marcado para esse qualificador.A candidate is neutral in relation to a qualifier if it is not marked for that qualifier at all. Para qualquer qualificador, um candidato neutro é sempre uma correspondência para o valor do qualificador de contexto, mas com uma qualidade de correspondência inferior à de qualquer candidato que tenha sido marcado para esse qualificador e tenha um certo grau de correspondência (exata ou parcial).For any qualifier, a neutral candidate is always a match for the context qualifier value, but only with a lower quality of match than any candidate that was marked for that qualifier and has some degree of match (exact or partial). Por exemplo, se tivermos candidatos qualificados como "en-US", "en" e "fr", e um candidato de idioma neutro, em um contexto com o valor de qualificador de idioma "en-GB", os candidatos serão classificados na seguinte ordem: "en", "en-US", neutro e "fr".For example, if we have candidates qualified for "en-US", "en", "fr", and also a language-neutral candidate, then for a context with a language qualifier value of "en-GB", the candidates will be ranked in the following order: "en", "en-US", neutral, and "fr". Nesse caso, "fr" não oferece correspondência, mas os outros candidatos oferecem um certo grau de correspondência.In this case, "fr" does not match at all, while the other candidates match to some degree.

O processo global de classificação começa avaliando candidatos em relação ao qualificador de maior prioridade, que é o idioma.The overall ranking process begins by evaluating candidates in relation to the highest-priority qualifier, which is language. Os que não corresponderem serão eliminados.Non-matches are eliminated. Os demais candidatos são classificados em relação à sua qualidade de correspondência de idioma.The remaining candidates are ranked in relation to their quality of match for language. Se houver empate, o qualificador de maior prioridade seguinte, contraste, será levado em consideração, usando a qualidade de correspondência para contraste com o objetivo de diferenciar entre os candidatos empatados.If there are any ties, then the next-highest-priority qualifier, contrast, is considered, using the quality of match for contrast to differentiate among tied candidates. Após o contraste, o qualificador de escala é usado para diferenciar os demais empates, e assim por diante em quantos qualificadores forem necessários para chegar a uma classificação bem ordenada.After contrast, the scale qualifier is used to differentiate remaining ties, and so on through as many qualifiers as are needed to arrive at a well-ordered ranking.

Se todos os candidatos são eliminados da consideração porque os qualificadores não correspondem ao contexto, o carregador de recursos faz uma segunda passada procurando um candidato padrão para exibir.If all candidates are removed from consideration due to qualifiers that don't match the context, the resource loader goes through a second pass looking for a default candidate to display. Os candidatos padrão são determinados durante a criação do arquivo PRI e devem garantir que sempre haverá um candidato a ser selecionado em qualquer contexto de tempo de execução.Default candidates are determined during creation of the PRI file and are required to ensure there is always some candidate to select for any runtime context. Se um candidato tiver algum qualificador não correspondente e não padrão, esse candidato a recurso será descartado definitivamente.If a candidate has any qualifiers that don't match and aren't a default, that resource candidate is thrown permanently out of consideration.

Para todos os candidatos a recurso ainda em consideração, o carregador de recursos examina o valor do qualificador de contexto de prioridade mais alta e escolhe aquele que corresponde melhor ou com a melhor pontuação padrão.For all the resource candidates still in consideration, the resource loader looks at the highest-priority context qualifier value and chooses the one that has the best match or best default score. Qualquer correspondência real é considerada melhor que uma pontuação padrão.Any actual match is considered better than a default score.

Se houver um vínculo, o valor do qualificador de contexto com a próxima prioridade mais alta será inspecionado e o processo continua, até que uma correspondência melhor seja encontrada.If there is a tie, the next-highest priority context qualifier value is inspected and the process continues, until a best match is found.

Exemplo de escolha de um candidato a recursoExample of choosing a resource candidate

Considere estes arquivos.Consider these files.

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

Suponha que estas sejam as configurações no contexto atual.And suppose that these are the settings in the current context.

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

O Sistema de Gerenciamento de Recursos elimina três dos arquivos, pois o alto contraste e o idioma alemão não correspondem ao contexto definido pelas configurações.The Resource Management System eliminates three of the files, because high contrast and the German language do not match the context defined by the settings. Isso descarta esses candidatos.That leaves these candidates.

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 os candidatos restantes, o Sistema de Gerenciamento de Recursos usa o qualificador de contexto de prioridade mais alta, que é idioma.For those remaining candidates, the Resource Management System uses the highest-priority context qualifier, which is language. Os recursos em inglês são uma correspondência mais próxima do que os recursos em francês, pois o inglês está listado antes do francês nas configurações.The English resources are a closer match than the French ones because English is listed before French in the settings.

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

Em seguida, o Sistema de Gerenciamento de Recursos usa o qualificador de contexto com a próxima prioridade mais alta, que é escala.Next, the Resource Management System uses the next-highest priority context qualifier, scale. Portanto, este será o recurso retornado.So this is the resource returned.

en/images/logo.scale-400.jpg

Você pode usar o método avançado NamedResource.ResolveAll para recuperar todos os candidatos na ordem em que eles correspondem às configurações de contexto.You can use the advanced NamedResource.ResolveAll method to retrieve all of the candidates in the order that they match the context settings. No exemplo que acabamos de analisar, ResolveAll retorna candidatos nesta ordem.For the example we just walked through, ResolveAll returns candidates in this order.

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

Exemplo de produção de uma opção de fallbackExample of producing a fallback choice

Considere estes arquivos.Consider these files.

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

Suponha que estas sejam as configurações no contexto atual.And suppose that these are the settings in the current context.

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

Todos os arquivos são eliminados porque não correspondem ao contexto.All the files are eliminated because they do not match the context. Então, entramos em uma passagem padrão, na qual o padrão (consulte Compilar recursos manualmente com o MakePri.exe) durante a criação do arquivo PRI era esse.So we enter a default pass, where the default (see Compile resources manually with MakePri.exe) during creation of the PRI file was this.

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

Isso descarta todos os recursos que correspondem ao usuário atual ou ao padrão.This leaves all the resources that match either the current user or the default.

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

O Sistema de Gerenciamento de Recursos usa o qualificador de contexto de prioridade mais alta, idioma, para retornar o recurso nomeado com a pontuação mais alta.The Resource Management System uses the highest-priority context qualifier, language, to return the named resource with the highest score.

de/images/contrast-standard/logo.jpg

APIs importantesImportant APIs