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.

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.

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.

Glavna forma sadrži Tab kontrolu koja posjeduje 3 stranice.
- Prva stranica „Opće kontrole“ sadrži nekoliko osnovnih kontrola te kombo box za promjenu jezika.
- Druga stranica „Pismo“ sadrži konverziju teksta sa latinice na ćirilicu i obrnuto
- 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.

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.

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.
- Formirati Novi projekat u VS, New Windows Forms Application
- Formirati kontrole kao što su prikazane
- Formirati Utility Klasu u kojoj su implementirane proširene metode
- Lokalizirati glavnu formu
- 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.

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:

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

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:

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 .

Kompletan source kod možete skinuti sa ovog linka.