Lokalizacija .NET aplikacija


Uvod

Lokalizacija je proces koji se koristi pri razvoju aplikacija koje podržavaju više od jednog jezičkog ili geografskog pojma. Usavršavanjem razvojnih alata, a posebno microsoftove .NET platforme, lokalizacija aplikacija nije nikada bila jednostavnija i brža. Prethodne platforme imale su kompleksan sistem lokalizacije koje su se implementirale na razne načine i izvan jednog IDE (integrisanog razvojnog okruženja). Lokalizirati aplikaciju na .NET platformi danas predstavlja vrlo jednostavan i intuitivan posao, jer sve što nam je potrebno da lokaliziramo aplikaciju na jedan ili više jezika i pisama nalazi se ugrađeno u .NET platformi, sa raznim dizajnerskim alatima koje posjeduje Visual Studio. Način lokalizacije u .NET definisan je iznad .NET programskih jezika C# i VB.NET tako da je ovaj proces gotovo nezavisan od programskog jezika.

Da bi mogli izvršiti lokalizaciju jedne aplikacije potrebno je upoznati sljedeće prostore naziva:

1. System.Globalization. Ovaj prostor čine klase koje definišu informacije o kulturama (državama), koje uključuju jezike, zemlje i regione, kalendare, formate datuma, monetu, brojeve, stringove za sortiranje… Od svih klasa koje čine ovaj prostor CultureInfo je klasa koju najviše koristimo.

2. System.Resources. Ovaj prostor čine klase s kojim se formira resurs datoteke raznih jezika i kultura. Klasu s kojom se veći dio posla obavlja je ResourceManager. Ovom klasom se obezbjeđuje pristup resursima kontrola koje su pohranjene u glavnom asembliju (dll-u).

Prilikom lokalizacije unutar Visual studia svaka forma posjeduje datoteke resursa u kojoj su odvojene jezičke implementacije teksta. Kada se aplikacija kompajlira formiraju se satelitski dll-ovi, smješteni u foldere koji dobijaju nazive oznaka jezika, kao što je prikazano na sljedećoj slici.

clip_image002

Svaki folder sadrži datoteku čiji se naziv sastoji od tri pojma: Naziva glavnog dll ili aplikacije, resource riječi te ekstenzije, npr. ImeAplikacije.resource.dll . Kada se aplikacija počne učitavati u memoriju računara na osnovu parametara CultureInfo klase učitava se korespodentni satelitski dll, a GUI se ispisuje na odabranom jeziku.

clip_image004

Primjer aplikacije

 

Da bi izvršili lokalizaciju potrebno je formirati testnu aplikaciju, te implementirati svu funkcionalnost koja je potrebna, te onda pristupiti lokalizaciji. Za ovaj primjer formirana .NET aplikacija koja posjeduje jednu formu kao na sljedećoj slici.

clip_image006

Glavna forma sadrži Tab kontrolu koja posjeduje 3 stranice.

  1. Prva stranica „Opće kontrole“ sadrži nekoliko osnovnih kontrola te kombo box za promjenu jezika.
  2. Druga stranica „Pismo“ sadrži konverziju teksta sa latinice na ćirilicu i obrnuto
  3. Treća stranica „Kalendar“ sadrži konverziju datuma sa gregorijanskog kalendara u kalendar po Hidžri.

Testna aplikacija pokazuje razne slučajeve lokalizacije, i korištenje gore pomenutih klasa.

Kako aplikacija radi….

Kada pokrenemo aplikaciju prvi put učitava se Osnovni jezik „Bosanski“. U prvoj stranici Tab kontrole imamo jednu listBox kontrolu i način na koji možemo lokalizirati stavke listbox kontrole, manipulirajući sa glavnom resurs datotekom aplikacije. Također imamo datagridview kontrolu i način na koji lokaliziramo nazive kolona u njoj. Kada kliknemo na dugme Dodaj u listbox kontrolu dobijamo novu stavku zavisno na kojoj se trenutno lokalizaciji aplikacija nalazi.

U aplikaciji su implementirane 3 lokalizacije: Engleski jezik, Hrvatski Jezik, Srpski jezik. Kao osnovni jezik prikazan je Bosanski. Kada izaberemojezik iz komboboxa, aplikacije se restartuje a zadnji odabrani jezik učita se u aplikaciju. Moguće je promijeniti jezik u aplikaciji i bez restartovanja aplikacije, ali takav način bi izgubio jednostavnost ovog članka.

Druga stranica Tab kontrole sadrži konvertore između latinice i ćirilice. Metoda koja konvertuje latinicu u ćirilicu prenešena je sa www.elitesecuruty.org, a modificirana je kao proširena string metoda. Metoda koja konvertuje ćirilicu u latinici analogno je implementirana.

Upisivanjem teksta u editkontrolu i aktivacijom dugmeta na desnoj edit kontroli se pojavljuje konvertovani tekst.

clip_image008

Treća stranica Tab kontrole prikazuje na koji način pretvaramo gregorijanski kalendar u kalendar po Hidžri..NET framework posjeduje posebnu klasu System.Globalization.HijriCalendar s kojim prikazujemo datum po Hidžri. U svrhu konvertovanja datuma u datum po Hidžri potrebno je izvršiti dodatna formatiranja, jer se imena dana i mjeseci dobijaju na arapskom. Naravno potrebno je takva imana prevesti na latinične nazive. U ovoj implementaciji definisana je također proširena metoda DateTime klase pomoću koje se vrlo jednostavno pretvara datum po Hidžri.

image

Implementacija aplikacije

U prethodnom dijelu opisana je sama aplikacija na koji način radi i što je sve implementirano. Ovim poglavljem ćemo ukratko opisati na koji je način aplikacija implementirana.

  1. Formirati Novi projekat u VS, New Windows Forms Application
  2. Formirati kontrole kao što su prikazane
  3. Formirati Utility Klasu u kojoj su implementirane proširene metode
  4. Lokalizirati glavnu formu
  5. Lokalizirati glavnu resurs datoteku aplikacije
Lokalizacija aplikacije

 

.NET tehnologija lokalizaciju definiše sa nivoa projekta do nivoa jedna forme. Ovaj način lokalizacije obezbjeđuje fleksibilnost u samom procesu. Lokalizacijom na nivou projekta omogućeno je definisanje različitih verzija Resource datoteke.

clip_image010

U datoteku Resource.resx postavljena je varijabla listBoxStavka, koja sadrži naziv stavke u listbox kontroli. Resurs datoteka je iskopirana i preimenovana shodno sljedećim skraćenicama:

· en-US – Engleski US

· hr-HR – Hrvatski

· sr-Cyrl-CS – Srpski

Na osnovu toga formirane su datoteke resources.(jezik).resx, koje su prikazane na gornjoj slici. Kada su datoteke formirane te listBoxStavka prevedena na korespodentni jezik, sada u aplikaciji pristupamo datim strignovima preko ResourceManager-a:

clip_image012

Lokalizacija forme počinje kada osobinu Localizable postavimona true, te Language postavimo na željeni jezik:

clip_image014

Nakon toga dizajner formira resurs datoteku unutar forme. Isti postupak ponavljamo za onoliko jezika koliko je potrebno. Kada su resurs datoteke formirane potrebno je stringove iz Form1.resx, kopirati u formirane datoteke te lokalizirati. Ovim procesom je izvršena lokalizacija.

Postavljanje jezika u aplikaciji

Postavljanje jezika u aplikaciji vršimo sljedećim kodom koji prikazuje lokalizaciju na engleski:

clip_image016

Nakon izvršenja ovog koda potrebno je aplikaciju restartovati. Gornji kod se postavlja prije inicijalizacije glavne forme u aplikaciji.

Konverzija datuma u datum po Hidžri

Obzirom da .NET posjeduje lokalizaciju zemalja kod kojih se datum računa po Hidžri, potrebno je koristeci jednu od dotičnih lokalizacija, standardni zapadni datum konvertovati u datum po Hidžri. Ovdje je problem kada želimo da formatiramo mjesec i dan po imenu, pri čemu dobijamo nazive na arapskom pismu. Proširena metoda konverzije datuma sadrži također nazive mjeseci i dana u sedmici napisane onako kako se piše i izgovara na postoru Bosne i Hercegovine .

clip_image018

Kompletan source kod možete skinuti sa ovog linka.

About Bahrudin Hrnjica

PhD in Mechanical Engineering, Microsoft MVP for .NET. Likes .NET, Math, Mechanical Engineering, Evolutionary Algorithms, Blogging.

Posted on 22/09/2009, in .NET, C# and tagged , . Bookmark the permalink. 2 Comments.

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s