Entrar com a conta da Microsoft
Entrar ou criar uma conta.
Olá,
Selecionar uma conta diferente.
Você tem várias contas
Escolha a conta com a qual você deseja entrar.

ASP.NET coluna de voz de suporte

Para personalizar esta coluna às suas necessidades, convidamos você a enviar suas ideias sobre tópicos que lhe interessam e problemas que você deseja ver abordados em artigos futuros da Base de Dados de Conhecimento e colunas de Voz de Suporte. Você pode enviar suas ideias e comentários usando o formulário Ask For It. Há também um link para o formulário na parte inferior desta coluna.

Introdução

Bem-vindo! Este é Sukesh Khare com a equipe de Suporte ao Desenvolvedor do Microsoft ASP.NET. É a primeira vez que criei uma coluna de Voz de Suporte. Estou ansioso para criar mais dessas colunas nos próximos meses.

Para a coluna deste mês, vou discutir problemas de globalização em ASP (Active Server Pages) e ASP.NET, os problemas que enfrentamos no ASP, como as coisas mudaram em ASP.NET 1x e o que está acontecendo com ASP.NET 2,0 na frente de globalização.

Observação Se você encontrar um termo que não entende, consulte a seção Glossário na parte inferior desta coluna.

Problemas de globalização no ASP

Antes de ASP.NET, não havia suporte estruturado para o desenvolvimento de aplicativos para usuários globais. Durante o desenvolvimento inicial do ASP, desenvolvedores como eu encontraram apenas suporte disperso para globalização em sistemas operacionais, navegadores, ASPs e sistemas de back-end. No entanto, raramente observamos qualquer conectividade automática entre esses aplicativos. Felizmente, entendemos conceitos como conjuntos de caracteres, páginas de código, idiomas do navegador e fontes que poderíamos aproveitar para o desenvolvimento de aplicativos para usuários globais.

Seria muito difícil separar em categorias todas as questões de globalização que aqueles de nós em ASP.NET viram. Em vez disso, listarei uma série de conceitos relacionados a uma variedade desses problemas.

Conjuntos de caracteres e páginas de código

Todos sabemos que os caracteres na tela do computador são apenas uma série de bytes. A série de bytes pode ser criada e interpretada de várias maneiras. Se a interpretação usar uma codificação diferente da codificação com a qual a matriz de bytes foi criada, a interpretação será exibida como lixo. Os conjuntos de caracteres (charsets) são formatos de codificação que geralmente são usados pelos navegadores. A propriedade Codepage, que é mais aplicável para conversões do lado do servidor, é apenas uma tabela de conversão que especifica como os caracteres são codificados.

Os navegadores codificam os dados de postagem de formulário de acordo com o conjunto de caracteres atual. Se o conjunto de caracteres atual for "windows-1256", a transmissão de bytes para o servidor também será codificada como "windows-1256".

Quando o ASP está sendo interpretado, as coleções Formulário e Querystring não são criadas até que sejam referenciadas em código. Quando eles estão sendo criados, os dados de cadeia de caracteres são transformados em Unicode de acordo com a página de código atual. (Por padrão, as asp e ASP.NET processar conteúdo usando o formato Unicode). É muito importante que você defina a página de código correta antes de fazer referência às coleções; caso contrário, a representação Unicode na memória não estará correta.

Para definir uma página de código, use Session.Codepage ou Response.Codepage. A página Response.Code só está disponível em versões Serviços de Informações da Internet da Microsoft (IIS) 5.1 ou posteriores. Para obter informações sobre os valores inteiros (que correspondem ao conjunto de caracteres) para os quais definiríamos essas propriedades, visite o seguinte site da Microsoft:

Reconhecimento de conjunto
de caracteres http://msdn2.microsoft.com/en-us/library/Aa752010.aspxPor exemplo, para definir a página de código para o idioma árabe, use o seguinte código:

Session.Codepage = 1256

Response.Codepage só afetará a resposta atual. No entanto, Session.Codepage afetará todas as respostas feitas pelo usuário atual. Quando a página de código é definida usando uma dessas propriedades e as coleções Form e Querystring são criadas, essa alteração na página de código atual faz com que o método Response.Write transforme o Unicode na memória para a página de código atual. Para obter mais informações sobre este tópico, visite o seguinte site do MSDN:

Definir a Página de Código para Conversões de Cadeia de Caracteres (ASP)http://msdn2.microsoft.com/en-us/library/ms525789.aspxA linha de fundo quando se trata dos problemas relacionados a charsets e páginas de código é que o charset do cliente e a página de código do servidor devem corresponder.

Aceitar idiomas

Se um desenvolvedor ASP quiser saber quais idiomas um usuário definiu em seu navegador, o desenvolvedor poderá usar a variável Request.ServerVariables ("HTTP_ACCEPT_LANGUAGE") para encontrar a lista de idiomas em que o usuário gostaria de ler a resposta (como inglês, alemão ou indiano) e a ordem de preferência em que o usuário gostaria de ver esses idiomas. Em ASP.NET, informações semelhantes estão presentes na propriedade Request.UserLanguages como uma matriz.
Para obter mais informações sobre como usar essas informações no código ASP, clique no seguinte número de artigo para exibir o artigo na Base de Dados de Conhecimento da Microsoft:

229690 Como definir a ID de Localidade do ASP de acordo com as configurações de linguagem do navegador
 

Exibindo conjuntos de caracteres de vários bytes na Internet Explorer

O único formato de codificação que pode mostrar um conjunto de caracteres de vários bytes é Unicode (UTF-8). Com o UTF-8, podemos exibir cirílico, indiano e japonês na mesma página. Se não usarmos o UTF-8, só poderemos mostrar um desses idiomas por vez. Para definir o charset do navegador, use a propriedade Response.CharSet.

Caracteres estáticos de vários bytes em uma página

Para exibir caracteres de vários bytes armazenados diretamente na página, primeiro devemos salvar a página com codificação específica. O UTF-8 será melhor, mas uma página de código específica (correspondente à página de código dos caracteres) também funcionará.

Salvar um arquivo ASP usando o Microsoft Visual InterDev não ajuda aqui, já que o Visual InterDev só pode salvar em inglês ANSI ou Unicode. Nenhuma página ASP salva como Unicode não tem suporte do ASP.

No Microsoft Visual Studio .NET, você pode salvar um arquivo em qualquer codificação. Há duas maneiras de fazer isso. A maneira padrão é salvar o arquivo usando a página de código atual para o usuário. Uma maneira adicional de salvar um arquivo com uma codificação é a seguinte:
No menu Arquivo , clique em Salvar Arquivo Como.
Na caixa de diálogoSalvar Arquivo Como, clique na seta suspensa no
botãoSalvar. Quando você clica na seta, as opções são
Salvar e Salvar com Codificação. Ao clicar em
Salvar com Codificação, a caixa de diálogo Opções avançadas de salvamento é exibida onde você pode selecionar o tipo de codificação que deseja aplicar em uma lista das páginas de código instaladas no computador.


Observação Isso altera a codificação para a operação de salvamento, mas é apenas por uma vez. A próxima salvação será definida de volta para o padrão.

Para alterar a página de código padrão, clique em Opções avançadas de salvamento no
menuArquivo. Na caixa de diálogo Opções avançadas de salvamento , você pode definir a codificação padrão para operações de salvamento na página de código de sua escolha.

Esses métodos estão relacionados à forma como o arquivo é salvo em disco. No entanto, para controlar a saída do ASP, conforme já discutido, precisamos definir as propriedades Session.CodePage e Response.CharSet. Com o IIS 5.1 e versões posteriores, também podemos usar a propriedade Response.CodePage.

CODEPAGE padrão no servidor

A localidade padrão e a página de código padrão para a página dependem das configurações do registro para o . Usuário PADRÃO. Podemos encontrar a chave internacional no registro hive HKEY_USERS\.DEFAULT\Control Panel\International. Também podemos alterar o comportamento da localidade escolhida pelo IIS.

Se o usuário conectado tiver a mesma localidade definida como a chave acima ou o padrão do sistema, a configuração do usuário terá precedência.

Exemplo: a localidade padrão tem o formato de data definido como 11.1.2004, enquanto o usuário conectado (com o mesmo conjunto de localidades) tem o formato de data como 11/1/2004. A configuração 11/1/2004 entrará em vigor para ASP.

(Para ASP.NET, isso pode variar. Em algumas instalações, o usuário ASPNET terá seu próprio perfil que aparecerá em HKEY_USERS quando for carregado. Em outros, ele usará o . Perfil PADRÃO. Também podemos usar o atributo codepage na declaração <%@ %>. Isso deve ser usado quando o arquivo é salvo com uma codificação diferente, em seguida, o padrão, como a página de código 932 (japonês)).

Problemas de página de código versus problemas de conversão de fonte: qual é qual?

Às vezes, você pode ver um caractere de ponto de interrogação (?) ou uma caixa em que um caractere deveria aparecer.

Problemas de conversão de página de código

Quando um caractere é substituído por um caractere de ponto de interrogação (?), isso é uma indicação de que ocorreu um problema de conversão de página de código. O ponto de interrogação (?) é um caractere padrão para a conversão de página de código e basicamente significa que o sistema operacional não sabe como lidar com o valor do caractere e convertê-lo. Ele substitui o valor do caractere por um ponto de interrogação (?). Isso pode significar que o caractere tem um valor inválido para a página de código ou que a página de código necessária para a conversão não está instalada.

Problemas de conversão de fonte

Quando um caractere é substituído por uma caixa, isso é uma indicação de que ocorreu um problema de conversão de fonte. Isso ocorre no lado do cliente quando o cliente não tem a fonte correta instalada para exibir esse caractere corretamente. Por exemplo, quando um caractere é do charset japonês e o cliente não tem as fontes japonesas instaladas, o caractere japonês é exibido como uma caixa.

Em seguida, falarei sobre como as coisas mudaram no ASP.NET 1.x e como essas mudanças afetam problemas de globalização no contexto de ASP.NET.

Problemas de globalização no ASP.NET 1.x:

Com ASP.NET, três grandes coisas foram introduzidas:

  • A marca> de globalização <no arquivo
    web.config A marca <> de globalização nos tira dos conceitos incoerentes de páginas de código e charsets e nos permite controlar a maioria das variantes dentro de ASP.NET.

  • O namespace
    System.Globalization O namespace de globalização nos fornece o poder programático de lidar com a globalização.

  • O conceito de arquivos de recursos foi muito aprimorado.
    Não lidamos com arquivos de recursos da maneira que costumávamos fazer no ASP. Agora, os arquivos de recurso estão na forma de arquivos XML quando os projetamos e os desenvolvemos, e eles existem como montagens em runtime.

A marca de configuração de globalização:

Duas configurações importantes na marca são as seguintes:

<globalization 
            requestEncoding="utf-8" 
            responseEncoding="utf-8"  />

Outras áreas de configurações possíveis seguem:

Fileencoding

Especifica a codificação padrão para a análise de arquivos .aspx, .asmx e .asax. Os arquivos Unicode e UTF-8 salvos com o prefixo de marca de ordem de byte (com assinatura) serão reconhecidos automaticamente, independentemente do valor do fileEncoding.

Cultura

Especifica a cultura padrão para processamento de solicitações Web de entrada (aplicável em métodos de classes do namespace System.Globalization).

Uiculture

Especifica a cultura padrão para processar pesquisas de recursos dependentes de localidade (assemblies de satélite).

Para obter mais informações sobre cadeias de caracteres de cultura (valores de cultura e uiculture), visite o seguinte site da Microsoft:

System.Globalization.CultureInfoClass
http://msdn2.microsoft.com/en-us/library/system.globalization.cultureinfo(vs.71).aspxEssas configurações são aplicadas por ASP.NET após a conclusão da resposta e antes que a solicitação seja entregue ao aplicativo. Para responseEncoding, o buffer criado para armazenar a saída é definido como essa codificação. Tudo o que entrar nesse buffer será codificado de acordo com a configuração à medida que ele é inserido no buffer.

Para requestEncoding, o runtime lerá a solicitação e a interpretará de acordo com a configuração desta seção. No entanto, essa é uma configuração que pode causar problemas. A tabela abaixo mostra o layout do bit de uma sequência de bytes UTF-8 válida.

Se o valor do caractere cair no padrão ASCII de 7 bits, o valor do byte não será modificado. Se o valor estiver acima de 127, ele deverá seguir as regras abaixo. O conjunto de bits principal mostra quantos caracteres estão na sequência. Cada byte após o primeiro deve começar com o primeiro bit definido como 1.

Layout de bytes UTF-8:

Bytes

Bits

Representação

1

7

0vvvvvvv

2

11

110vvvvv 10vvvv

3

16

1110vvvv 10vvvv 10vvvvvv

4

21

11110vvv 10vvvv 10vvvvvv 10vvvvvv

É aqui que o problema vem. Se o navegador codificar a solicitação de acordo com uma única codificação de bytes (como iso-8859-1), os valores acima de 127 não serão válidos de acordo com o layout acima. Quando eles são lidos no buffer UTF-8, os caracteres inválidos são simplesmente removidos da saída.

Alterações de codificação em tempo de execução

No evento Application_BeginRequest, podemos modificar o valor da requestEncoding e fazer com que ela entre em vigor antes que a solicitação seja processada. Para a resposta, o evento Page_PreRender é a última chance de modificar a codificação da saída. Observe também que Response.Write colocará caracteres nesse buffer assim que o chamarmos, portanto, certifique-se de ter o conjunto de codificação certo antes de usar Response.Write.

Os dados originais não são unicódigos: como ainda fazer a Internet Explorer interpretar charsets de vários bytes?

Também podemos fazer com que ASP.NET se comporte como ASP se precisarmos. Para que isso ocorra, precisamos definir a respostaEncoding e requestEncoding como windows-1252 (uma codificação mais completa do que iso-8859-1) e usar a propriedade Response.Charset para exibir o texto corretamente. Isso funciona porque o windows-1252 é um esquema de codificação de bytes único e não modifica nenhum bytes adicionados ao buffer. Assim, os caracteres de bytes duplos são enviados como uma série de bytes únicos. Em seguida, podemos informar à Internet Explorer como interpretar os bytes usando a propriedade Response.Charset. Esse cenário poderá ser necessário se os dados originais não forem armazenados como Unicode ou UTF-8, como um valor retornado de um objeto COM ou se os dados forem armazenados na Microsoft SQL Server em um campo não N (como varchar).

problemas de globalização SQL Server e ASP.NET

Entrada de dados unicode para SQL Server

A melhor maneira de armazenar dados no SQL Server é utilizar o Unicode. Sempre que usamos INSERT, UPDATE etc, se houver uma menor chance de dados Unicode, precisamos adicionar um N antes do valor. Isso informa ao banco de dados que o valor é Unicode. Um bom exemplo disso são os objetos ADO. Eles fazem isso automaticamente se usarmos o objeto Recordset para adicionar novos registros.

Veja a seguir um exemplo:

INSERT INTO MusicAlbum (Album_ID, [Year], Name, Artist_ID, Company_ID) VALUES (12345, 2005, N'Abida', 4653, 403)
Or:
Dim t As String = "INSERT INTO MusicAlbum(Album_ID, [Year], Name, Artist_ID, Company_ID) VALUES (12345, 2005, N'" & TextBox1.Text & "', 4653, 403)"
Entrada de data/hora para SQL Server

Normalmente, temos o conhecimento sobre a cultura e a localidade da data/hora que está sendo interpretada em nosso aplicativo ASP.NET. No entanto, enquanto pressionamos e puxamos os dados de data/hora de e para fontes externas, corremos o risco de interpretar mal os formatos de data/hora. Isso ocorre porque nem sempre podemos garantir que a cultura e a localidade da origem externa sejam iguais às do nosso aplicativo. Em SQL Server isso pode ser resolvido usando o atributo 'linguagem atual' na conexão da conexão que está sendo estabelecida com o banco de dados SQL. Podemos fornecer a mesma configuração de idioma na cadeia de conexões que é a cultura em nosso aplicativo. Isso nos protege contra o risco de má interpretação, pois SQL Server sempre aceita e envia os dados de data/hora em consentimento com a configuração mencionada acima.

Namespace System.Globalization

Esse namespace é o núcleo de globalização e localização no .NET Framework. A classe main usada neste namespace é a classe CultureInfo. Ele contém informações específicas da cultura, como o formato de data/hora, formatos de número, informações de comparação e informações de texto. Para obter mais informações sobre a classe CultureInfo, visite o seguinte site do MSDN:

http://msdn2.microsoft.com/en-us/library/system.globalization.cultureinfo(vs.71).aspxCultureInfo

Culturas neutras versus culturas específicas

Uma cultura neutra é uma cultura associada a uma linguagem, mas não a um país/região específico. Uma cultura específica está associada a um idioma e a um país/região específicos.

Um exemplo: "DE" (cultura neutra) é para a língua alemã, mas "de-AT" (cultura específica) é para a língua alemã como é falada na Áustria. Culturas neutras não podem ser usadas para formatação.

Reconhecimento de cultura e thread atual das classes de .NET Framework

Todas as classes e métodos na biblioteca .NET Framework em que esperamos que a saída seja dependente da cultura têm dois comportamentos internos:

  • Eles nos permitem especificar o código de cultura ao fornecer os argumentos para que a saída seja baseada na cultura especificada. Isso é opcional.

  • Se isso for perdido (geralmente é), as classes serão inteligentes o suficiente para manter um marcar na propriedade Thread.CurrentThread.CurrentCulture e funcionar de acordo com isso.

Podemos modificar o valor dessa propriedade com um código semelhante ao seguinte:

    Dim ci As CultureInfo
        ci = New CultureInfo("de-AT")
        Thread.CurrentThread.CurrentCulture = ci

Neste exemplo de código, "de" representa a língua alemã e "AT" representa a Áustria. Portanto, nesta instância, o DateTime.Now(). O método ToString retornaria a data e a hora em um formato correspondente à forma como a data e a hora são expressas na língua alemã na Áustria.

A estrutura garante (da seguinte maneira) que a propriedade CurrentCulture seja sempre inicializada:

  1. O que quer que esteja definido como programaticamente.

  2. Caso não seja definida explicitamente pelo programador, a propriedade é escolhida nos arquivos de configuração (<marca> de globalização).

  3. Se a propriedade estiver ausente lá, será a cultura na qual o servidor Web está em execução. Geralmente, essa é a cultura neutra que corresponde à linguagem do sistema operacional.

Arquivos de recursos

Todos os arquivos .resx, .resource e que têm o atributo Build Action definido como Recurso Incorporado que são adicionados a um projeto ASP.NET no Visual Studio .NET, são compilados e inseridos automaticamente no assembly do aplicativo como parte de seu manifesto. Isso pode até mesmo ser feito manualmente usando o utilitário RESGEN (Resource File Generator) por meio de um prompt de comando do Visual Studio .NET. Para obter mais informações, visite o seguinte site da MSDN:

http://msdn2.microsoft.com/en-us/library/ccec7sz1(vs.71).aspxEsse é um conceito geral que é aplicável sempre que precisamos gerenciar recursos de aplicativo que não estão relacionados à globalização. No entanto, quando estamos implementando a globalização, devemos usar assemblies satélites.

Assemblies satélites

Os assemblies satélites podem ser usados em um projeto de ASP.NET quando você se certificar de que os seguintes são verdadeiros:

  1. Todos os elementos de interface do usuário em todos os arquivos aspx precisam ser equipados com atributos id e runat=server.

  2. Criamos arquivos .resx separados. Cada um deve corresponder a cada cultura que desejamos que nosso aplicativo dê suporte.

  3. Devemos decidir um primeiro nome comum para todos esses arquivos para ex. 'Cadeias de caracteres'.

  4. Nomeamos os arquivos .resx separados com o commonfirstname da convenção de nomenclatura a seguir. languagecode-regioncode.resx (por exemplo: Strings.de-AT.resx, Strings.en-GB.resx ).

  5. Devemos ter o arquivo
    de recursocommonfirstname.resx (Strings.resx) que tenha todas as cadeias de caracteres como desejamos exibidas no caso padrão.

  6. Escreva código para detectar a cultura do usuário e defina a propriedade Thread.CurrentThread.CurrentUICulture para corresponder a ela.

  7. Escreva código para carregar os recursos usando a classe ResourceManager.

  8. Escreva código para extrair cadeias de caracteres do objeto carregado e atribua-as a elementos de interface do usuário.

Quando você tiver executado essas etapas, o Visual Studio.NET compilará Strings.resx e o inserirá no assembly do aplicativo (MyGlobalizationTestProjectName.dll). No entanto, para todos os outros arquivos .resx, ele gerará arquivos dll separados que não têm código executável, mas apenas dados de recurso. Na verdade, são chamados de assemblies satélites. Além disso, o Visual Studio .NET os coloca na estrutura de pastas semelhante ao seguinte:MyGlobalizationTestProjectName
|------- bin
|------en-US

MyGlobalizationTestProjectName.resources.dll |------ja-JP

MyGlobalizationTestProjectName.resources.dll |------de-AT
MyGlobalizationTestProjectName.resources.dll

Diferença entre CurrentCulture e CurrentUICulture

Embora os métodos de classes no namespace System.Globalization dependam da propriedade Thread.CurrentThread.CurrentCulture para fornecer sua saída, a classe ResourceManager que carrega o assembly de recursos depende da propriedade Thread.CurrentThread.CurrentUICulture para carregar o assembly de satélite apropriado. A seguir está um exemplo de código C#:

using System.Globalization;
using System.Threading;
using System.Resources;

//Load resources. 
protected ResourceManager gStrings = new ResourceManager("MyGlobalizationTestProjectName.strings", typeof(MyTestWebFormName).Assembly);

// Get the user's preferred language.
string sLang = Request.UserLanguages[0];
// Set the thread's culture for formatting, comparisons, etc.   
Thread.CurrentThread.CurrentCulture =  CultureInfo.CreateSpecificCulture(sLang);
// Set the thread's UICulture to load resources
// from satellite assembly.
Thread.CurrentThread.CurrentUICulture = new CultureInfo(sLang);

private void Page_Load(object sender, System.EventArgs e) 

{ 

 if (!IsPostBack)  

 {      
// Get strings from resource file and assign to UI elements.
head1.InnerHtml = gStrings.GetString("satellite.head1");
p1.InnerHtml = gStrings.GetString("satellite.p1");
sp1.InnerHtml = gStrings.GetString("satellite.sp1");
sp2.InnerHtml = gStrings.GetString("satellite.sp2");
butOK.Text = gStrings.GetString("satellite.butOK");
butCancel.Value = gStrings.GetString("satellite.butCancel");
   }

 }

Ordem na qual ASP.NET seleciona assemblies satélites:

Quando você definir o CurrentUICulture do thread, ASP.NET seleciona automaticamente os recursos correspondentes, na seguinte ordem:

  • Se um assembly satélite for encontrado com uma cultura correspondente, os recursos desse assembly serão usados.

  • Se um assembly satélite for encontrado com uma cultura neutra que corresponda ao CurrentUICulture, os recursos desse assembly serão usados.

  • Se uma correspondência não for encontrada para o CurrentUICulture, os recursos de fallback armazenados no assembly executável serão usados.

Observação Isso se baseia no processo de fallback de recursos mais geral. Para obter mais informações, visite o seguinte site da MSDN:

http://msdn2.microsoft.com/en-us/library/sb6a8618(vs.71).aspx

Criando manualmente assemblies satélites:

Esse uso de assemblies satélites é onde o Visual Studio .NET cria os assemblies em si. No entanto, o Visual Studio .NET não nomeia fortemente assemblies satélites por padrão. Se você quiser alterar essas opções, precisará criar assemblies via satélite manualmente. Para obter mais informações, visite o seguinte site da MSDN:

http://msdn2.microsoft.com/en-us/library/21a15yht(vs.71).aspx .

O que há com ASP.NET 2.0 na frente de globalização?

O uso generalizado de ASP.NET e os tipos de problemas que veríamos em relação aos recursos de globalização no ASP.NET 2.0 ainda estão um pouco à frente. No entanto, seria bom dar uma breve olhada em que direção a metodologia de globalização está indo para aplicativos Web.

O suporte à globalização no ASP.NET 2.0 sofreu uma alteração radical e os desenvolvedores Web receberam a capacidade de tornar a localização de aplicativos Web tão fácil quanto é para aplicativos baseados no Windows. Veja a seguir uma lista de recursos que são a base da metodologia de globalização no ASP.NET 2.0:

Recursos fortemente tipado No núcleo da versão do .NET Framework 2.0 há suporte para recursos fortemente tipizados que fornecem aos desenvolvedores o Intellisense e simplifica o código necessário para acessar recursos no runtime.

O Visual Studio .NET 2.0 do Editor de Recursos Gerenciado inclui um novo editor de recursos com melhor suporte para criar e gerenciar entradas de recursos, incluindo cadeias de caracteres, imagens, arquivos externos e outros tipos complexos.

A geração de recursos para desenvolvedores Web Forms Windows Forms já usufruiram dos benefícios da internacionalização automática. O Visual Studio .NET 2005 agora oferecerá suporte à internacionalização rápida gerando recursos automaticamente para Web Forms, controles de usuário e páginas de master.

As instâncias do ResourceManager de suporte de runtime aprimoradas são gerenciadas pelo runtime e prontamente acessíveis ao código do servidor por meio de interfaces de programação mais acessíveis.

Expressões de localização Expressões declarativas modernas para páginas da Web dão suporte a entradas de recursos de mapeamento para controlar propriedades, propriedades HTML ou regiões de conteúdo estático. Essas expressões também são extensíveis, fornecendo maneiras adicionais de controlar o processo de anexação de conteúdo localizado à saída HTML.

Seleção de cultura automática Gerenciar a seleção de cultura para cada solicitação da Web pode ser vinculado automaticamente às preferências do navegador.

Modelo de provedor de recursos Um novo modelo de provedor de recursos permite que os desenvolvedores hospedem recursos em fontes de dados alternativas, como arquivos simples e tabelas de banco de dados, enquanto o modelo de programação para acessar esses recursos permanece consistente.

Para obter mais informações sobre a metodologia de globalização no ASP.NET 2.0, visite o seguinte site do MSDN:

ASP.NET recursos de localização 2.0: uma nova abordagem para localizar aplicativos
Webhttp://msdn2.microsoft.com/en-us/library/ms379546(VS.80).aspx

Conclusão

Isso é tudo por enquanto sobre problemas de globalização no ASP e ASP.NET. Espero que este artigo ajude alguns clientes a solucionar problemas de globalização no ASP e no ASP.NET antes de optarem por entrar em contato com Suporte da Microsoft. Terminarei com o seguinte pensamento:

"Onde e sempre que você estiver desenvolvendo, pense nos milhões de pessoas que você pode capacitar em todo o mundo. Tornar suas soluções prontas para o mundo! Ferramentas e tecnologias da Microsoft facilitam a internacionalização.".

Vamos nos atualizar novamente no próximo mês com outro tópico interessante.

Obrigado pelo seu tempo.

Para obter mais informações sobre problemas de globalização em ASP e ASP.NET, confira os seguintes sites da Microsoft:

SetLocale e GetLocale no vbscript
http://msdn2.microsoft.com/en-us/library/5xf99h19.aspx

Http://msdn.microsoft.com/en-us/goglobal/bb688110 passo a passo
da globalização

Go Global: Localizando Aplicativos Web Dinâmico com o IIS 5.0 e SQL Server
http://msdn.microsoft.com/msdnmag/issues/01/05/global/default.aspx

Ir Global: projetar seu site baseado em ASP para dar suporte à globalização
http://msdn.microsoft.com/msdnmag/issues/0700/localize/default.aspx

315616 como detectar uma linguagem de cliente em uma página de páginas do Servidor Ativo no IIS
http://support.microsoft.com/?id=315616

Gráfico LCID (ID local)
http://msdn2.microsoft.com/en-us/library/0h88fahh.aspx

System.Globalization Namespace
http://msdn2.microsoft.com/en-us/library/system.globalization(vs.71).aspx

Recursos e Localização Usando o SDK
.NET Frameworkhttp://msdn2.microsoft.com/en-us/library/aa309421(VS.71).aspx

Recursos em aplicativos
ASP.NEThttp://msdn2.microsoft.com/en-us/library/1ztca10y(vs.71).aspx

ASP.NET <elemento
de configuração> de globalizaçãohttp://msdn2.microsoft.com/en-us/library/hy4kkhe0(vs.71).aspx

Diretrizes de design e implementação para clientes Web – globalização elocalização
http://msdn2.microsoft.com/en-us/library/ms978628.aspx

Site oficial da Microsoft – Portal
de Desenvolvimento Global e Computaçãohttp://msdn.microsoft.com/en-us/goglobal/bb688096

Desenvolvendo aplicativos
prontos para o mundohttp://msdn2.microsoft.com/en-nós/biblioteca/h6270d0z(vs.71).aspx

Arquitetura de globalização parahttp://msdn2.microsoft.com/en-us/library/aa478974.aspx de ASP.NET

Kit de ferramentas de localização empresarial – para desenvolver aplicativos
do Microsoft ASP.NETlocalizados http://msdn2.microsoft.com/en-us/library/aa479334.aspx

Http://www.microsoft.com/typography/default.mspx de tipografia
da Microsoft

Glossário

ANSI significa American National Standards Institute. Nesse contexto, ele representa uma página de código específica para um conjunto de caracteres/linguagem específico. Na maioria das vezes, refere-se à página de código em inglês (windows-1252).

Esquema de codificação ASCII A 1 byte (ou 7 bits). Somente os caracteres no intervalo 0-127 são padronizados. O intervalo 128-255 são extensões para ASCII e não fazem parte do padrão. Um exemplo disso é a diferença entre o intervalo superior do gráfico OEM ASCII e o gráfico ASCII do VB.

Configuração do CharSet usada principalmente para navegadores e Explorer de Internet que informa ao navegador como interpretar os dados de caracteres. Exemplo: Response.charSet = "iso-8859-1".

Página de código Uma tabela de conversão que especifica como os caracteres são codificados (geralmente usados para servidores).

Globalização A globalização é um processo de criação e criação de um aplicativo para que os requisitos exclusivos de uma cultura, região ou necessidades nacionais/regionais e linguísticas possam ser atendidos. Em outras palavras, projetar um aplicativo de uma maneira que ele possa ser localizado posteriormente é a globalização.

Locale/Culture Language e formatos/preferências específicos da região, incluindo formatos de data e calendário, formatos de hora, formatos de moeda, casing, classificação e comparação de cadeia de caracteres, formatos de endereço, formatos de número de telefone, tamanhos de papel, unidade de medida, direção de escrita etc.

LocaleID (LCID) Um valor DWORD que especifica o identificador de idioma e a ID de classificação. Ele pode ser usado para especificar os formatos de região específicos para data/hora ex etc. devem ser formatados de acordo com.

Capacidade de localizabilidade de um aplicativo para apresentar conteúdo para o idioma/localidade exigido.

Localização A localização é o processo de traduzir uma interface do usuário em idiomas e/ou localidades específicos.

Conjunto de caracteres multibytes Um conjunto de caracteres no qual os caracteres são compostos por dois ou mais bytes, como japonês. O UTF-8 também se enquadra nessa categoria. (O Unicode tecnicamente está nessa categoria, mas no Windows, ele tem sua própria categoria.)

Unicode Um esquema de codificação de 2 bytes. O Windows usa o Unicode internamente. Todas as APIs especificamente para Unicode são assinadas por um "W" no final do nome da função. Também conhecido como char largo; não pode ser usado diretamente de aplicativos Web.

UTF-8 Uma codificação de caracteres em que um caractere pode ser representado por 1-6 bytes. No Windows, o intervalo é de 1 a 3 bytes. Não há suporte em NT4 para aplicativos Web.



Conjunto de caracteres largo Um alias para Unicode. Também conhecido como DBCS (conjunto de caracteres de bytes duplo), UCS-2, UTF-16.

Como sempre, sinta-se à vontade para enviar ideias sobre tópicos que você deseja abordar em colunas futuras ou na Base de Conhecimento usando o formulário Ask For It.

Precisa de mais ajuda?

Quer mais opções

Explore os benefícios da assinatura, procure cursos de treinamento, saiba como proteger seu dispositivo e muito mais.

As comunidades ajudam você a fazer e responder perguntas, fazer comentários e ouvir especialistas com conhecimento avançado.

Essas informações foram úteis?

Qual é o seu grau de satisfação com a qualidade do idioma?
O que afetou sua experiência?
Ao pressionar enviar, seus comentários serão usados para aprimorar os produtos e serviços da Microsoft. Seu administrador de TI poderá coletar esses dados. Política de Privacidade.

Agradecemos seus comentários!

×