Pergunta

Eu trabalhei com configurações de globalização no passado, mas não dentro do ambiente .NET, que é o tópico desta questão. O que estou vendo é certamente devido ao conhecimento que ainda tenho que aprender, então apreciaria a iluminação sobre o seguinte.


Configuração: minha configuração de idioma padrão é o inglês (en-US especificamente). Adicionei um segundo idioma (dinamarquês) no meu sistema de desenvolvimento (WinXP) e depois abri a barra de idiomas para poder selecionar a vontade.


Selecionei dinamarquês na barra de idiomas e depois abri o bloco de notas e encontrei o idioma reverteu para o inglês na barra de idiomas. Eu entendo que a configuração do idioma é por aplicação, parecia que o bloco de notas colocou o padrão de volta ao inglês. (Eu achei isso estranho, já que o Windows e, portanto, o bloco de notas é usado em todo o mundo.) Fechando o bloco de notas devolveu o cenário na barra de idiomas para o dinamarquês. Em seguida, lancei meu aplicativo Winform personalizado aberto-que eu conheço não define o idioma-e também Revertido de inglês para dinamarquês quando aberto, depois voltou ao dinamarquês quando encerrado!

Pergunta #1A: Como faço para obter meu aplicativo Winform após o lançamento para herdar a configuração atual da barra de idiomas? Meu experimento parece indicar que cada aplicativo começa com o padrão do sistema e exige que o usuário altere manualmente quando o aplicativo estiver em execução-isso parece ser um grande inconveniente para quem deseja trabalhar com mais de um idioma!

Pergunta #1b: Se alguém deve, de fato, definir o idioma manualmente em um cenário de múltiplas línguas, como altero meu idioma padrão do sistema (por exemplo, para dinamarquês) para que eu possa testar o lançamento do meu aplicativo em outro idioma?


Adicionei uma exibição do idioma atual no meu aplicativo para este próximo experimento. Especificamente eu defino um MouseEnter manipulador em um rótulo que definiu sua dica de ferramenta para CultureInfo.CurrentCulture.Name Então, cada vez que o mouse, pensei em ver a configuração atual do idioma. Desde que defini o idioma antes de lançar meu aplicativo não funcionou, eu o iniciei e defini o idioma para dinamarquês. Descobri que algumas coisas (como digitar em uma caixa de texto) honraram esse cenário dinamarquês. Mas mouse sobre o rótulo instrumentado ainda mostrou en-us!

Pergunta #2A: Porque CultureInfo.CurrentCulture.Name Não refletir a mudança da minha barra de idiomas, enquanto outras partes do meu aplicativo parecem reconhecer a mudança? (Tentando CultureInfo.CurrentUICulture.Name produziu o mesmo resultado.)

Pergunta nº 2b: Existe um evento que atire nas mudanças na barra de idiomas para que eu possa reconhecer dentro do meu aplicativo quando a configuração do idioma mudar?


2010.05.13 Atualização

As informações curtas, mas doces fornecidas pela Eric, da Microsoft (veja sua resposta abaixo), abordaram diretamente apenas uma das minhas quatro perguntas (nº 2A), mas forneceu apenas o ímpeto que eu precisava para mergulhar mais e descobrir o resto. Para o benefício de outras pessoas que também podem ficar confusas com isso, aqui está o que eu descobri:

Resposta #1A: Um aplicativo herda a configuração da linguagem de entrada padrão, não o idioma que você especifica na barra de idiomas. Depois que seu aplicativo estiver em execução, muda na barra de idiomas vai ser notado imediatamente pelo seu aplicativo.

Resposta #1b: Definir o idioma de entrada padrão é feito via painel de controle regional e de opções de idiomas >> Guia Idiomas >> Detalhes >> Guia Configurações >> Idioma de entrada padrão.

Resposta #2A: Respondido por Eric, a cultura atual é distinta da linguagem de entrada atual que se reflete na barra de idiomas; A digitação em uma caixa de texto é influenciada apenas pelo idioma de entrada atual.

Resposta #2b: Não existe um evento predefinido para a linguagem de entrada ou a notificação de mudança de cultura atual. Um fato importante a ser observado aqui é que as alterações no idioma de entrada são automaticamente reconhecidas imediatamente enquanto as mudanças atuais da cultura não são. Você deve reiniciar seu pedido de mudança de cultura atual para entrar em vigor-a menos que possa notar a mudança e agir sobre ela. Para esse fim, encontrei um artigo do MSDN (Os muitos rostos da classe CultureInfo) Isso fornece exatamente esse gancho para perceber a alteração.

Foi útil?

Solução

Existem três configurações de linguagem separadas em jogo. A barra de idiomas controla a linguagem de entrada (Idioma de entrada) que é distinto do idioma para exibir a interface do usuário (Currentuiculture), que é distinto da linguagem para classificar/formatar/analisar (CurrentCulture).

É verdade que isso é confuso.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top