Como posso garantir que a versão do idioma adequado de um recurso de seqüência de caracteres é carregada em tempo de execução?
-
12-11-2019 - |
Pergunta
Eu tenho um recurso de seqüência de caracteres do arquivo chamado "cadeias de caracteres.resx" no meu VB.NET o projeto, definido como um recurso incorporado.Eu tenho um outro arquivo chamado strings.es.resx
, que contém todas as mesmas seqüências de caracteres em espanhol.Eu estou carregando o recurso em tempo de execução usando o seguinte código:
MyStrings = New ResourceManager("myprog.strings", GetType(MainForm).Assembly)
Eu definir o idioma para Espanhol no Windows e voltar, mas eu ainda estou começando o inglês recursos de seqüência de caracteres de carregamento quando acima é executado.Como posso carregar o espanhol de recursos, se a localidade do Windows é ES?Eu estava esperando para ser processada automaticamente.
Solução
Dê uma olhada no System.Threading.Thread.CurrentThread.CurrentUICulture
a propriedade tem um hábito de ser corrigido para pt-br.
Se for, tente defini-la para o mesmo CurrentCulture
.
Atualização
Desde que não funciona, verifique se a pasta de saída do seu aplicativo tem um es
pasta, no interior do qual é uma dll chamada strings.resources.dll.Se não, então, basicamente, o gerenciador de recursos não é encontrar a cultura específica do recurso de seqüência de caracteres, porque não há, no caso, copiá-los e ele deve funcionar.
Outras dicas
ISENÇÃO de responsabilidade - isso é tudo de memória e poderá não ser 100% precisa :-)
.NET recursos são carregados usando Thread.CurrentUICulture
(a menos que você explicitamente substituí-la quando o carregamento de recursos no código). Thread.CurrentUICulture
é definido pela INTERFACE de utilizador idioma utilizado na instalação do Windows, e não pode ser alterado.Este não é o mesmo que Thread.CurrentCulture
, o que é definido no Painel de Controle, e podem ser alterados a qualquer tempo.
Por exemplo, no meu PC, CurrentCulture
retorna "en-GB"
porque é de onde eu sou, mas CurrentUICulture
retorna "en-US"
porque a Microsoft só fornecer uma versão de idioma inglês do Windows.