Resources e Internacionalização usando Visual Studio.NET 2005 - Parte III


por Mauricio Junior em 1/1/2011 0

Bom, meu nome é Mauricio Junior e estou disposto a mostrar e explicar como funciona a parte de internacionalização dentro do framework 2.0. Antes de começar o artigo as partes I e II podem ser vistos nos links a seguir:

 

Parte I

Parte II

 

Essas parte III, irei mostrar como utilizar e mostrar em sua página web, escolhendo apenas uma opção dentro de uma dropdownlist a língua que deseja utilizar naquele momento apenas clicando uma vez.

 

Requisitos do artigo: (1.1)

 

1 – Ter instalado o Visual Studio.NET 2005;

2 – Ler os dois artigos citados anteriormente;

3 – Linguagem utilizada: C#.NET;

4 – Conhecer o mínimo de System.Globalization

Referência: 1.1

 

 

 

 

 

Criando o Projeto

 

No primeiro passo, criei o projeto com o nome UICulturaASPNET vinculado ao IIS instalado em minha máquina. Para definir isso, utilizei o protocolo http na criação do projeto com o Visual Studio.NET 2005. (1.2)

 

 

 

Referência: 1.2

 

 

 

Dentro da parte em HTML, usarei alguns objetos do Visual Studio.NET como: dropdownlist, button e label. Colocarei bem simples para o melhor entendimento e exemplificação. Gostaria de que você leitor fizesse o exemplo todo na prática. Para entender melhor a forma de criação do artigo, irei criar uma combo, onde terá várias linguagens a ser escolhidas, de acordo com a seleção da linguagem a página irá mudar automaticamente.

 

Usei as línguas inglês, português e alemão.

Segue uma tabela que me ajudou muito na definição da língua. (1.3)

 

Culture Name

Culture Identifier

Language-Country/Region

"" (empty string)

0x007F

invariant culture

af

0x0036

Afrikaans

af-ZA

0x0436

Afrikaans - South Africa

sq

0x001C

Albanian

sq-AL

0x041C

Albanian - Albania

ar

0x0001

Arabic

ar-DZ

0x1401

Arabic - Algeria

ar-BH

0x3C01

Arabic - Bahrain

ar-EG

0x0C01

Arabic - Egypt

ar-IQ

0x0801

Arabic - Iraq

ar-JO

0x2C01

Arabic - Jordan

ar-KW

0x3401

Arabic - Kuwait

ar-LB

0x3001

Arabic - Lebanon

ar-LY

0x1001

Arabic - Libya

ar-MA

0x1801

Arabic - Morocco

ar-OM

0x2001

Arabic - Oman

ar-QA

0x4001

Arabic - Qatar

ar-SA

0x0401

Arabic - Saudi Arabia

ar-SY

0x2801

Arabic - Syria

ar-TN

0x1C01

Arabic - Tunisia

ar-AE

0x3801

Arabic - United Arab Emirates

ar-YE

0x2401

Arabic - Yemen

hy

0x002B

Armenian

hy-AM

0x042B

Armenian - Armenia

az

0x002C

Azeri

az-AZ-Cyrl

0x082C

Azeri (Cyrillic) - Azerbaijan

az-AZ-Latn

0x042C

Azeri (Latin) - Azerbaijan

eu

0x002D

Basque

eu-ES

0x042D

Basque - Basque

be

0x0023

Belarusian

be-BY

0x0423

Belarusian - Belarus

bg

0x0002

Bulgarian

bg-BG

0x0402

Bulgarian - Bulgaria

ca

0x0003

Catalan

ca-ES

0x0403

Catalan - Catalan

zh-HK

0x0C04

Chinese - Hong Kong SAR

zh-MO

0x1404

Chinese - Macao SAR

zh-CN

0x0804

Chinese - China

zh-CHS

0x0004

Chinese (Simplified)

zh-SG

0x1004

Chinese - Singapore

zh-TW

0x0404

Chinese - Taiwan

zh-CHT

0x7C04

Chinese (Traditional)

hr

0x001A

Croatian

hr-HR

0x041A

Croatian - Croatia

cs

0x0005

Czech

cs-CZ

0x0405

Czech - Czech Republic

da

0x0006

Danish

da-DK

0x0406

Danish - Denmark

div

0x0065

Dhivehi

div-MV

0x0465

Dhivehi - Maldives

nl

0x0013

Dutch

nl-BE

0x0813

Dutch - Belgium

nl-NL

0x0413

Dutch - The Netherlands

en

0x0009

English

en-AU

0x0C09

English - Australia

en-BZ

0x2809

English - Belize

en-CA

0x1009

English - Canada

en-CB

0x2409

English - Caribbean

en-IE

0x1809

English - Ireland

en-JM

0x2009

English - Jamaica

en-NZ

0x1409

English - New Zealand

en-PH

0x3409

English - Philippines

en-ZA

0x1C09

English - South Africa

en-TT

0x2C09

English - Trinidad and Tobago

en-GB

0x0809

English - United Kingdom

en-US

0x0409

English - United States

en-ZW

0x3009

English - Zimbabwe

et

0x0025

Estonian

et-EE

0x0425

Estonian - Estonia

fo

0x0038

Faroese

fo-FO

0x0438

Faroese - Faroe Islands

fa

0x0029

Farsi

fa-IR

0x0429

Farsi - Iran

fi

0x000B

Finnish

fi-FI

0x040B

Finnish - Finland

fr

0x000C

French

fr-BE

0x080C

French - Belgium

fr-CA

0x0C0C

French - Canada

fr-FR

0x040C

French - France

fr-LU

0x140C

French - Luxembourg

fr-MC

0x180C

French - Monaco

fr-CH

0x100C

French - Switzerland

gl

0x0056

Galician

gl-ES

0x0456

Galician - Galician

ka

0x0037

Georgian

ka-GE

0x0437

Georgian - Georgia

de

0x0007

German

de-AT

0x0C07

German - Austria

de-DE

0x0407

German - Germany

de-LI

0x1407

German - Liechtenstein

de-LU

0x1007

German - Luxembourg

de-CH

0x0807

German - Switzerland

el

0x0008

Greek

el-GR

0x0408

Greek - Greece

gu

0x0047

Gujarati

gu-IN

0x0447

Gujarati - India

he

0x000D

Hebrew

he-IL

0x040D

Hebrew - Israel

hi

0x0039

Hindi

hi-IN

0x0439

Hindi - India

hu

0x000E

Hungarian

hu-HU

0x040E

Hungarian - Hungary

is

0x000F

Icelandic

is-IS

0x040F

Icelandic - Iceland

id

0x0021

Indonesian

id-ID

0x0421

Indonesian - Indonesia

it

0x0010

Italian

it-IT

0x0410

Italian - Italy

it-CH

0x0810

Italian - Switzerland

ja

0x0011

Japanese

ja-JP

0x0411

Japanese - Japan

kn

0x004B

Kannada

kn-IN

0x044B

Kannada - India

kk

0x003F

Kazakh

kk-KZ

0x043F

Kazakh - Kazakhstan

kok

0x0057

Konkani

kok-IN

0x0457

Konkani - India

ko

0x0012

Korean

ko-KR

0x0412

Korean - Korea

ky

0x0040

Kyrgyz

ky-KG

0x0440

Kyrgyz - Kyrgyzstan

lv

0x0026

Latvian

lv-LV

0x0426

Latvian - Latvia

lt

0x0027

Lithuanian

lt-LT

0x0427

Lithuanian - Lithuania

mk

0x002F

Macedonian

mk-MK

0x042F

Macedonian - Former Yugoslav Republic of Macedonia

ms

0x003E

Malay

ms-BN

0x083E

Malay - Brunei

ms-MY

0x043E

Malay - Malaysia

mr

0x004E

Marathi

mr-IN

0x044E

Marathi - India

mn

0x0050

Mongolian

mn-MN

0x0450

Mongolian - Mongolia

no

0x0014

Norwegian

nb-NO

0x0414

Norwegian (Bokmål) - Norway

nn-NO

0x0814

Norwegian (Nynorsk) - Norway

pl

0x0015

Polish

pl-PL

0x0415

Polish - Poland

pt

0x0016

Portuguese

pt-BR

0x0416

Portuguese - Brazil

pt-PT

0x0816

Portuguese - Portugal

pa

0x0046

Punjabi

pa-IN

0x0446

Punjabi - India

ro

0x0018

Romanian

ro-RO

0x0418

Romanian - Romania

ru

0x0019

Russian

ru-RU

0x0419

Russian - Russia

sa

0x004F

Sanskrit

sa-IN

0x044F

Sanskrit - India

sr-SP-Cyrl

0x0C1A

Serbian (Cyrillic) - Serbia

sr-SP-Latn

0x081A

Serbian (Latin) - Serbia

sk

0x001B

Slovak

sk-SK

0x041B

Slovak - Slovakia

sl

0x0024

Slovenian

sl-SI

0x0424

Slovenian - Slovenia

es

0x000A

Spanish

es-AR

0x2C0A

Spanish - Argentina

es-BO

0x400A

Spanish - Bolivia

es-CL

0x340A

Spanish - Chile

es-CO

0x240A

Spanish - Colombia

es-CR

0x140A

Spanish - Costa Rica

es-DO

0x1C0A

Spanish - Dominican Republic

es-EC

0x300A

Spanish - Ecuador

es-SV

0x440A

Spanish - El Salvador

es-GT

0x100A

Spanish - Guatemala

es-HN

0x480A

Spanish - Honduras

es-MX

0x080A

Spanish - Mexico

es-NI

0x4C0A

Spanish - Nicaragua

es-PA

0x180A

Spanish - Panama

es-PY

0x3C0A

Spanish - Paraguay

es-PE

0x280A

Spanish - Peru

es-PR

0x500A

Spanish - Puerto Rico

es-ES

0x0C0A

Spanish - Spain

es-UY

0x380A

Spanish - Uruguay

es-VE

0x200A

Spanish - Venezuela

sw

0x0041

Swahili

sw-KE

0x0441

Swahili - Kenya

sv

0x001D

Swedish

sv-FI

0x081D

Swedish - Finland

sv-SE

0x041D

Swedish - Sweden

syr

0x005A

Syriac

syr-SY

0x045A

Syriac - Syria

ta

0x0049

Tamil

ta-IN

0x0449

Tamil - India

tt

0x0044

Tatar

tt-RU

0x0444

Tatar - Russia

te

0x004A

Telugu

te-IN

0x044A

Telugu - India

th

0x001E

Thai

th-TH

0x041E

Thai - Thailand

tr

0x001F

Turkish

tr-TR

0x041F

Turkish - Turkey

uk

0x0022

Ukrainian

uk-UA

0x0422

Ukrainian - Ukraine

ur

0x0020

Urdu

ur-PK

0x0420

Urdu - Pakistan

uz

0x0043

Uzbek

uz-UZ-Cyrl

0x0843

Uzbek (Cyrillic) - Uzbekistan

uz-UZ-Latn

0x0443

Uzbek (Latin) - Uzbekistan

vi

0x002A

Vietnamese

vi-VN

0x042A

Vietnamese - Vietnam

Referência: 1.3

 

 

 

Dentro da página default.aspx, criei alguns objetos como falado anteriormente.

 

 

 

DropDownList

Id = cmbLinguagem

 

Referência: 1.4

 

 

 

Button

Id= cmdLinguagem

 

Referência: 1.5

 

 

 

Label

Id= lblDescricao

 

Referência: 1.6

 

 

Código HTML da página default.aspx (1.7)

 

 

<%@ Page Language="C#" AutoEventWireup="true"  CodeFile="Default.aspx.cs" Inherits="_Default" %>

 

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

 

<html xmlns="http://www.w3.org/1999/xhtml" >

<head runat="server">

    <title>Internacionalização - Parte III</title>

</head>

<body>

    <form id="form1" runat="server">

    <div>

        <asp:DropDownList ID="cmbLinguagem" runat="server">

            <asp:ListItem Value="pt-BR" Selected="True" Text="Português"></asp:ListItem>

            <asp:ListItem Value="de-CH" Text="German"></asp:ListItem>

            <asp:ListItem Value="en-US" Text="English"></asp:ListItem>

        </asp:DropDownList>

        <asp:Button ID="cmdLinguagem" Text="Setar Lingua" runat="server" OnClick="cmdLinguagem_Click" />

       

        <br /><br />

        <asp:Label ID="lblDescricao" runat="server"></asp:Label>

    </div>

    </form>

</body>

</html>

 

Referência: 1.7

 

 

Criando arquivos de resources

  

O próximo passo depois de criar o código da página HTML usando as tags libs do ASP.NET, é criar os arquivos de resources. Lembro que usarei três linguagens para a página, inglês, português e alemão.

 

Para criar o arquivo de resource, cliquei com o botão direito em cima do projeto e cliquei na opção ADD NEW ITEM. (1.8)

 

 

Referência: 1.8

 

 

Em seguida, apareceu a tela para escolher a opção do arquivo. (1.9)

Existe a opção Resource File, com a extensão resx, esse tipo serve para a internacionalização de seu sistema; resumindo; é um arquivo XML que contém o nome e valor.

 

 

 

Referência: 1.9

 

 

Depois que adicionei o arquivo junto ao meu projeto, coloquei alguns valores usando a nova estrutura visual do Visual Studio.NET 2005. A versão anterior não existia essa estrutura. (2.0)

 

 

Referência: 2.0

 

 

 

Name

O nome do atributo que usarei dentro do código fonte.

Value

O sistema automaticamente pegará o valor quando for setado o name.

Referência: 2.1

 

 

 

A referência (2.0) está na língua português. Preciso criar outros na língua inglês e alemão. O nome do arquivo criado é ResourceKey.resx, e os valores dentro dele está em português porque o padrão do site em primeiro lugar é português. Para criar os outros arquivos, usarei o mesmo procedimento de criar arquivo nas referências (1.8 e 1.9), mas usando um outro nome para os mesmos.

 

O arquivo de inglês ficou da seguinte forma: ResourceKey.en.resx

O arquivo de alemão ficou da seguinte forma: ResourceKey.de.resx

 

Essa parte é de grande importância, se não for criado os arquivos seguindo esse padrão, pode ocorrer o risco de não funcionar. Dentro de cada arquivo, coloquei o mesmo Name com Valores diferentes, os valores são respectivos da língua.

 

 

ResourceKey.en.resx (2.2)

Versão em inglês.

 

 

Referência: 2.2

 

 

A única diferença é colocar o valor na língua em inglês. O campo NAME deve ficar com o mesmo nome coloca no arquivo em português.

 

 

 

 

ResourceKey.de.resx (2.3)

Versão em Alemão.

 

 

Referência: 2.3

Obs.: não ligue para o meu alemão, não entendo nada.

 

 

 

Bom, fico por aqui com o artigo.

Fique de olho nos próximos artigos.

 

Segue meus livros publicados:

 

 

 

 

 

Qualquer dúvida, pode entrar em contato.

 

 

Mauricio Junior

mauricio@aspneti.com

www.ascompras.com

www.aspneti.com

 

 

voltar   comente  subir

 
Mauricio Junior Formado pela Faculdade Anhanguera, Especialista pela FGV (Fundação Getúlio Vargas), Pós-Graduação em Docência Superior e cursando Mestrado na UNB Engenharia Elétrica; .
Tenho 29 anos e possuo sete livros publicados pela editora Ciência Moderna. Sou Certificado Microsoft MCP, MCAD e MVP, faço parte da comunidade ASPNETI.COM, ECODE10.COM, onde publico artigos, vídeos, ebooks e livros Publico artigos, vídeos e podcast em outras comunidades. Trabalho como Analista de Sistemas / Desenvolvedor na empresa ATP S/A. Blog: blog.mauriciojunior.org, Site pessoal www.mauriciojunior.org



Comentários:

Comente (dê sua opinião):
Comentário:
Código Imagem:  (digite o código da imagem respeitando maiúsculo e minúsculo)

Favor digitar o código da imagem para cadastramento.

 

Outros Artigos do Autor

Desktop Linux Ubuntu
Windows Phone 7, nada como aprender vendo
Enviado email anexado
Montando Menu Dinâmico com Banco de Dados
Armazenando dados no ViewState – Parte I
Vídeo: Análise do Android 3.0 por um especialista
Trabalhando com Session
Microsoft Recite
Vídeo: Windows Phone com Windows Mobile 7
Aspirador de pó inteligente
Criando a Tag Cloud em C#
IsAlpha
Armazenando Dados no ViewState Parte II
Sistema ASP 3.0 utilizando 3 camadas – Parte 1
DateDiff com intervalos escolhidos por você
Conhecendo o controle Wizard ASP.NET 2.0
URL Routing com o Visual Studio .NET 2010
Visual Studio 11 – Melhorias e inovações parte 5
Vídeo Aula: Criando e Publicando Site de uma melhor maneira com C#.NET
Windows Phone no Brasil
Orientação a Objetos - Microsoft PetShop 3.0
Visual SourceSafe 2 / 3 parte
Criando Números Aleatoriamente
Encontrar o valor no texto
IsDecimal
Trabalhando bem com o “using”
Dica para acrescentar valor
As várias mensagens do Sistema Operacional
Chamando Programas de Dentro do Windows Forms
Dell Streak Demo
Gerando Relatório e Exportando para o Excel
Detectando Browser Mobile
Copiando Script
Sistema em ASP 3.0 utilizando 3 camadas – Parte 3
Treinamento VSTS