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