Qual é o significado real da caixa de diálogo “Selecione uma linguagem [para] programas não-Unicode ...”?

7

Qual é o verdadeiro significado do "Selecione um idioma para combinar com a versão do idioma dos programas não-Unicode que você deseja usar" diálogo sob o Painel de controle- > Configurações regionais- > Avançado no WinXP e Win2003?

De acordo com o texto da caixa de diálogo, o Windows usará isso para exibir as cadeias de recursos, como menus. O tratamento de arquivos de texto é específico do aplicativo, portanto, essa configuração não afetará isso.

Mas posso esperar alguma outra mudança no comportamento dessa configuração? Alguma informação sobre o que realmente está acontecendo quando esta configuração é alterada?

Editar: qual é a maneira interna (por exemplo, a API do Windows) de acessar o valor?

    
por Joshua Fox 15.04.2010 / 16:34

2 respostas

7

Resposta rápida: O Windows usa essa configuração como uma diretriz para converter entre caracteres ASCII de 8 bits mais antigos e caracteres Unicode de 16 bits modernos. Alguns aplicativos abusam dessa configuração para determinar qual interface do usuário do idioma deve ser mostrada.

The treatment of text files is application-specific , so this setting will not affect that.

Não é inteiramente verdade. Aqui estão alguns exemplos: (quando definido para o idioma coreano para programas não-Unicode '\' (barra invertida) é substituído por '₩' (símbolo da moeda coreano))

  • Em muitos aplicativos, todos os '\' aparecem como '₩' Dê uma olhada no gVim (um editor de texto). Nota: os dados subjacentes ainda são os mesmos de quando "\" aparece. Se você abrir este arquivo em outro computador, ele se parecerá com '\' novamente.
  • Todos os caminhos de arquivo são delimitados por '₩'.
  • Alguns aplicativos, como os drivers de vídeo da Intel, pegam essa configuração para decidir qual interface do usuário de idioma exibir.

Informaçõesdeplanodefundo:

WindowsusadoparaarmazenarstringscomcaracteresASCIIde8bits.Ouseja,cadacaractereusou8dígitosbinários.Issopermitiaapenas256caracteresdiferentes;nãoésuficientepararepresentartodasaslínguasescritasdomundo.Assim,diferentesregiõeslinguísticasdecidiraminterpretaroscaracteresde8bitsdeformadiferenteparaseadequaremàsuapróprialíngua(adicionandovogaisacentuadas,sinaldemoedaprópriaalémde'$',etc).Essassãochamadasdecodificações.OsaplicativosdeveminformarespecificamenteaoWindowsqualcodificaçãousar;muitosprogramasnão,portanto,oWindowsassumeacodificaçãolocalparaessaversãodoWindows.

AgoraoWindowsarmazenastringscomcaracteresUnicodede16bits.Cadacaractereusaodobrodebits.Issopermiteaté(quase)65.536caracteresdiferentes.Aindanãoésuficientepararepresentartodososidiomasescritosdomundo,masoUnicodetambémespecificaumamaneiradeescolhercertosconjuntosdecaracteresdeumconjuntomuitomaiordecaracteres.

Agora,oqueoWindowsfazquandoexecutaumprogramaantigoquenãosabesobreUnicode?OWindowsprecisaconverterentrecaracteresASCIIde8bitsecaracteresUnicodede16bits.OWindowspodefazerissomuitobemseoaplicativoantigoespecificarexplicitamenteacodificação,masmuitosaplicativosnão.Então,oWindowsassumecomopadrãoaconfiguraçãoemquestão:LanguageforNon-UnicodePrograms.

Editar:respondendoaoscomentáriosdeJoshua

So,inadditiontochoosingtheencodingforGUIstrings,thissettingcanaffectfontchoice(Iguessthe₩issimplyafontrepresentationforwhatappearsasbackslashinEuropeanfonts,no?)

Simenão.Algochamado" vinculação de fontes " está ocorrendo para exibir o '₩' quando uma fonte TrueType não inclua esse caractere. Somente '₩' é exibido em uma fonte diferente. No entanto, no caso de fontes não TrueType, uma fonte totalmente diferente é usada (por exemplo, no console do cmd.) Além disso, os símbolos de moeda são um caso muito especial. O Windows faz um trabalho extra para substituir '\' pelo símbolo da moeda local para manter o comportamento das versões anteriores do Windows.

As fontes do sistema do Windows também são alteradas por meio de algo chamado " substituição de fonte ." Nesse caso, as fontes do sistema são totalmente substituídas por uma nova fonte (embora o nome da fonte permaneça o mesmo). Da minha experiência com a localidade coreana, a nova fonte substituída não parece tão agradável quanto a fonte original.

Does this setting affect anything else?

Eu tive experiências raras em que o uso do idioma coreano fez com que um aplicativo não funcionasse corretamente. Um aplicativo que lembro foi uma ferramenta de visualização de expressão regular. Ele simplesmente não produzia os resultados corretos quando na localidade coreana (ou talvez nem sequer fosse iniciado?) Eu tive que mudar para a localidade dos EUA sempre que eu desejava usar este programa.

    
por 15.04.2010 / 19:52
1

Unicode based platforms, such as Windows XP and Server 2003, emulate the language environment required to run non-Unicode applications by internally converting application's non-Unicode text data to Unicode using a system wide variable commonly called the "system locale" (or "language for non-Unicode applications"). The language of the non-Unicode applications should be the same script or family as the one defined by the "system locale". Failing to meet this condition results in display of garbage characters in the UI of the application.

Origem .

Ou:

This setting enables programs that do not support Unicode to display menus and dialog boxes in their native language by installing the necessary code pages and fonts. However, programs designed for other languages may not display text correctly.

Only non-Unicode programs are affected by this setting. The language you select for this option does not change the menus and dialog boxes of Windows or other Unicode programs.

de Para exibir programas não-Unicode em sua língua nativa .

Mais informações em Idioma para programas não-Unicode .

    
por 15.04.2010 / 19:14