Share via


Globalização para o Windows Presentation Foundation

Este tópico apresenta problemas dos quais você deve estar ciente ao escrever aplicativos Windows Presentation Foundation (WPF) para o mercado global. Os elementos de programação de globalização são definidos no Microsoft .NET em System.Globalization.

Este tópico contém as seguintes seções.

  • Globalização de XAML
  • Criando uma interface do usuário internacional com XAML
  • Desenvolvendo aplicativos localizáveis
  • Usando o ClickOnce com aplicativos localizados
  • Tópicos relacionados

Globalização de XAML

A Extensible Application Markup Language (XAML) se baseia em XML e aproveita o suporte a globalização definido na especificação de XML. As seções a seguir descrevem alguns recursos de XAML dos quais você deve estar ciente.

Referências de caractere

Uma referência de caractere retorna o número do caractere Unicode que ela representa, em decimal ou hexadecimal. O exemplo a seguir mostra uma referência de caractere decimal.

Ϩ

Este exemplo mostra uma referência de caractere hexadecimal. Observe que ela possui um x na frente do número hexadecimal.

Ϩ

Codificação

A codificação com suporte XAML são ASCII, Unicode UTF-16 e UTF-8. A demonstrativo de codificação é no início de XAML documento. Se nenhum atributo codificação existe e não há uma ordem de byte, o analisador padrão UTF-8. UTF-8 e UTF-16 são as codificações preferenciais. UTF-7 não é suportado. O exemplo a seguir demonstra como especificar uma codificação UTF-8 em um arquivo XAML.

?xml encoding="UTF-8"?

Atributo de idioma

XAML usa xml:lang para representar o atributo de idioma de um elemento. Para usufruir o CultureInfo classe, o valor do atributo de linguagem precisa ser um dos nomes de cultura predefinidos pelo CultureInfo. XML: lang é hereditária na árvore de elemento (por regras do XML, não necessariamente por causa de herança de propriedade de dependência) e seu valor padrão é uma seqüência de caracteres vazia se não for explicitamente atribuída.

O atributo de idioma é muito útil para especificar dialetos. Por exemplo, Francês tem diferentes ortografias, vocabulários e pronúncias na França, Bélgica, Quebec e Suíça. Também chinês, japonês e coreano compartilham pontos de código no Unicode, mas as formas ideográficas são diferentes e usam fontes totalmente diferentes.

O exemplo de Extensible Application Markup Language (XAML) a seguir usa o atributo de idioma fr-CA para especificar francês canadense.

<TextBlock xml:lang="fr-CA">Découvrir la France</TextBlock>

Unicode

XAML oferece suporte a todos os recursos do Unicode incluindo "surrogates" (substitutos). Desde que o conjunto de caracteres possa ser mapeado para Unicode, ele é suportado. Por exemplo, GB18030 apresenta alguns caracteres que são mapeados para chinês, japonês e coreano (CFK) extensão A e B e pares substitutos, portanto, ele é totalmente suoprtado. Um aplicativo WPF pode usar StringInfo para manipular sequências de caracteres sem ter noções básicas sobre se eles têm pares substitutos ou combinações de caracteres.

Criando uma interface do usuário internacional com XAML

Esta seção descreve os recursos de interface do usuário (UI) que você deve considerar ao escrever um aplicativo.

Texto internacional

O WPF inclui suporte interno ao processamento de todos os sistemas de escrita suportados pelo Microsoft .NET Framework.

Os scripts a seguir são atualmente suportados:

  • Árabe

  • Bengali

  • Devanagari

  • Cirílico

  • Grego

  • Gujarati

  • Gurmukhi

  • Hebraico

  • Scripts ideográficos

  • Kannada

  • Laosiano

  • Latim

  • Malaiala

  • Mongol

  • Oriya

  • Sírio

  • Tâmil

  • Telugu

  • Thaana

  • Tailandês *

  • Tibetano

*Nesta versão, a exibição e edição de texto em tailandês são suportados; a quebra de palavras não.

Os scripts a seguir não são atualmente suportados:

  • Khmer

  • Hangul antigo coreano

  • Myanmar

  • Sinhala

Todos os escrita sistema motores OpenType fontes. OpenType as fontes podem incluir a OpenType tabelas de layout que permitem que criadores de fontes projetar fontes tipográficas melhor internacionais e high-participante. As tabelas de layout de fonte OpenType contêm informações sobre substituições de glifos, posicionamento de glifo, justificação e posicionamento de linha base, permitindo que aplicativos de processamento de texto melhorem o layout de texto.

Fontes OpenType permitem o tratamento de grandes conjuntos de glifos usando codificação Unicode. Tal codificação permite um amplo suporte internacional bem como suporte a variantes tipográficas de glifos.

A renderização de texto do WPF é alimentada pela tecnologia sub-pixel Microsoft ClearType que oferece suporte a independência de resolução. Isso melhora significativamente a legibilidade e fornece a capacidade de suportar documentos de alta qualidade, estilo revista, para todos os scripts.

Layout internacional

O WPF fornece uma maneira muito conveniente para oferecer suporte a layouts horizontais, bidirecionais e verticais. No framework de apresentação, a propriedade FlowDirection pode ser usada para definir o layout. Os padrões de direção de fluxo são:

  • LeftToRight - layout horizontal para latim, leste asiático e assim por diante.

  • RightToLeft - bidirecional para árabe, hebraico e assim por diante.

Desenvolvendo aplicativos localizáveis

Quando você escrever um aplicativo para consumo global você deve ter em mente que o aplicativo deve ser localizável. Os tópicos a seguir destacam pontos a serem considerados.

Multilingual User Interfaces (Interface multilíngue do usuário)

Multilingual User Interfaces (MUI) é um suporte da Microsoft para UIs trocarem de um idioma para outro. Um aplicativo WPF usa o modelo de conjunto de módulos (assembly) para oferecer suporte a MUI. Um aplicativo contém conjuntos de módulos (assemblies) neutros com relação a idioma, bem como conjuntos de módulos de recursos satélites dependentes de idioma. O ponto de entrada é um .exe gerenciado no assembly principal. WPF carregador de recursos aproveita o Frameworkdo Gerenciador de recursos para oferecer suporte à pesquisa de recursos e fallback. Conjuntos de módulos satélite de múltiplos idiomas funcionam com o mesmo conjunto de módulos (assembly) principal. O conjunto de recursos que é carregado depende da CurrentUICulture da thread atual.

Interface do usuário localizável

WPF uso de aplicativos XAML Para definir seus UI. XAML permite aos desenvolvedores especificar uma hierarquia de objetos com um conjunto de propriedades e lógica. O uso primário de XAML é desenvolver aplicativos WPF mas ela pode ser usada para especificar uma hierarquia de quaisquer objetos common language runtime (CLR). A maioria dos desenvolvedores usam XAML para especificar a UI do aplicativo e usam uma linguagem de programação como C# para reagir a interação do usuário.

A partir de um ponto de vista de recursos, um arquivo XAML projetado para descrever uma UI dependente de idioma é um elemento de recursos e, portanto, o formato final de distribuição deve ser localizável para oferecer suporte a idiomas internacionais. Como XAML não pode tratar eventos, muitos aplicativos XAML contêm blocos de código para fazer isso. Para obter mais informações, consulte XAML Overview. O código é extraído e compilado em binários diferentes quando um XAML arquivo é indexado em XAML binário (BAML). BAML arquivos, imagens e outros tipos de objetos de recurso gerenciado são incorporados no assembly de recurso satélite, que pode estar localizado em outros idiomas, ou o assembly principal quando a localização não é necessária.

ObservaçãoObservação:

Aplicativos WPF suportam todos os recursos do Framework CLR incluindo tabelas de strings, imagens e assim por diante.

Criando aplicativos localizáveis

Localização significa adaptar uma UI a diferentes culturas. Para tornar um aplicativo WPF localizável, os desenvolvedores precisam colocar todos os recursos localizáveis em um conjunto de módulos (assembly) de recursos . O conjunto de recursos é localizado em diferentes idiomas, e o código de suporte usa a API de gerenciamento de recursos para carregá-los. Um dos arquivos necessários para um aplicativo WPF é um arquivo de projeto (.proj). Todos os recursos que você usar em seu aplicativo devem ser incluídos no arquivo de projeto. O exemplo de arquivo .csproj a seguir mostra como fazer isso.

<Resource Include="data\picture1.jpg"/>
<EmbeddedResource Include="data\stringtable.en-US.restext"/>

Para usar um recurso em seu aplicativo instancie um ResourceManager e carregue o recurso que deseja usar. O exemplo a seguir demonstra como fazer isso.

void OnClick(object sender, RoutedEventArgs e)
{
  ResourceManager rm = new ResourceManager ("MySampleApp.data.stringtable",
       Assembly.GetExecutingAssembly());
  Text1.Text = rm.GetString("Message");
}

Usando o ClickOnce com aplicativos localizados

O ClickOnce é uma nova tecnologia de implantação Windows Forms fornecida com o Microsoft Visual Studio 2005. Ele permite a instalação de aplicativos e a atualização de aplicativos da Web. Quando um aplicativo que foi implantado com o ClickOnce é localizado ele somente pode ser exibido na cultura localizada. Por exemplo, se um aplicativo implantado está localizado para japonês ele pode apenas ser exibido no Microsoft Windows em japonês não no Windows em inglês. Isso representa um problema pois é um cenário comum usuários japonêses executarem uma versão em inglês do Windows.

A solução para esse problema está em definir o atributo de fallback de idioma neutro. Um desenvolvedor de aplicativoa pode, opcionalmente, remover recursos do conjunto de módulos (assembly) principal e especificar que os recursos podem ser encontrados em um assembly satélite correspondente a uma cultura específica. Para controlar esse processo use o NeutralResourcesLanguageAttribute. O construtor do NeutralResourcesLanguageAttribute classe possui duas assinaturas que leve um UltimateResourceFallbackLocation parâmetro para especificar o local onde o ResourceManager deve extrair os recursos de retorno: assembly principal ou asssembly satélite. O exemplo a seguir mostra como usar o atributo. Para o local de fallback final, o código faz com que o ResourceManager procure pelos recursos no subdiretório "de" do diretório do conjunto de módulos (assembly) atualmente em execução.

[assembly: NeutralResourcesLanguageAttribute(
    "de" , UltimateResourceFallbackLocation.Satellite)]

Consulte também

Conceitos

Visão geral de globalização e localização do WPF