Novo

Forum kao aplikacija na telefonu

Dodajte forum na početni ekran i koristite ga kao aplikaciju, sa menijem na dnu ekrana.

Prednost resource .resx fajlova za lokalizaciju u odnosu na neki ILocalization interfejs?

  • 9 odgovora
  • 3.493 pregleda

Najnovija ↓

Prednost resource .resx fajlova za lokalizaciju u odnosu na neki ILocalization interfejs? 27.12.2011. u 18:40 · pre 180 meseci #1
Imao sam situaciju da radim internacionalizaciju aplikacije. I sad meni nije jasno koja je prednost kreirati resurs za svaki jezik u odnosu na kreirati implementaciju interfejsa za svaki jezik?

Prednosti druge strane koje sam ja video i za koju sam se opredelio su sledece:

1. Kada pravim preko resors fajlova onda moram imati prvo mapiranje iz nekog generalnog imena u svako jezicko po fajlu. Recimo da imam polje koje ce da ispise Hello World na svakom jeziku. Tada bi imao resors u resx fajlu pod nekim generickim imenom npr HelloWorld i to bi mapirao na svaki jezik. A poziv u programu bi isao: metodaZaResors("imeResorsa"); dok bi u slucaju sa interfejsom isao samo poziv properija localization.HelloWorld; Sto znaci da on mora da pretrazuje po resors fajlu dok ne nadje taj kljuc. To je prilicno brzo, ali mi deluje sporije od ILocalization

2. Kada se radi preko resors fajlova, prave se satelit assembly koji stoje u posebnom folderu sa culture info imenom. Za inicijalizaciju odredjene kulture treba se baktati sa svim tim resors managerima, dok u slucaju sa ILocalization bi samo instancirao odgovarajucu implementaciju. (ovo realno i nije neka mana ili prednost)

3. Satelit asembli kada se menja se mora opet kompajlirati, sto znaci da nije fleksibilniji od ILocalization sistema, ili gresim?

Vrlo je verovatno da nisam u pravu sa ovim sto sam napisao, slobodno me ispravite.

Interesuje me koje su prednosti koriscenja .resx fajlova za lokalizaciju, sta ja to propustam, gde gresim?
Re: Prednost resource .resx fajlova za lokalizaciju u odnosu na neki ILocalization interfejs? 27.12.2011. u 20:16 · pre 180 meseci #2
Prednost .resx fajlova u odnosu na neki ILocalization interfejs je taj što imaš rešenje koje je stabilno i testirano, koje odlično radi sa .NET komponentama (bilo kontrole u WinForms aplikaciji ili validacija objekata korišćenjem DataAnnotations) i što svaki .NET developer zna kako to radi.
Dovoljno je da postaviš CurrentCulture i CurrentUICulture na CurrentThread i magija će uraditi svoje. Čak aplikacija neće pući kada ne postoji resource file za neki CultureInfo.

Ali nekada jednostavno moraš da implementiraš custom rešenje.
Ako npr. želiš da korisnici tvoje aplikacije, koji imaju specijalne privilegije, izmene vrednost u resource fajlovima, a da se pri tom ne rebuild-uje cela aplikacija.
Samo tada moraš voditi računa o keširanju, konkurentnosti, fallback jeziku, itd.
Potpis
gramatika srpskog jezika
testovi iz srpskog jezika
jezičke nedoumice
Re: Prednost resource .resx fajlova za lokalizaciju u odnosu na neki ILocalization interfejs? 27.12.2011. u 23:26 · pre 180 meseci #4
Neki dobar tutorial nemam, a i davno sam radio sa WinForms aplikacijama.
Ali uglavnom ide ovako nekako:

- Otvoriš formu i desni klik pa Properties (ili ALT + ENTER)
- Nađeš property Localizable i staviš njegovu vrednost na True
- Sačuvaš izmene (opciono)
- Iznad tog property-a imaš novi koji se zove Language. Njegova vrednost je (default) i to ti je ujedino fallback language.
- Ukoliko želiš da dodaš podršku za srpski jezik, promeni Language na Serbian (Latin) i svim kontrolama promeni Text property (na srpskom, naravno).
- Visual Studio je u pozadini napravio novi .resx fajl: Form1.sr-Latn.resx

Menjanje jezika (pozivom na button click):

Code:
// srpski
System.Threading.Thread.CurrentThread.CurrentCulture = System.Globalization.CultureInfo.GetCultureInfo("sr-Latn");
System.Threading.Thread.CurrentThread.CurrentUICulture = System.Globalization.CultureInfo.GetCultureInfo("sr-Latn");

// engleski
System.Threading.Thread.CurrentThread.CurrentCulture = System.Globalization.CultureInfo.GetCultureInfo("en-US");
System.Threading.Thread.CurrentThread.CurrentUICulture = System.Globalization.CultureInfo.GetCultureInfo("en-US");


E sada, kada se izvrši taj kod, jezik se neće promeniti za trenutnu formu, već samo za novootvorene forme.
Ukoliko želiš da se tekst promeni i na trenutnoj formi, pred tobom su 2 puta, baš kao u filmu Matrix:

- Možeš da uzmeš plavu pilulu, a to znači da zatvoriš formu i ponovo je otvoriš (najbezbolnije)
- Možeš da uzmeš crvenu pilulu, a to znači da ručno settuješ text na svim kontrolama

Zaista mi nije jasno zašto MS nije napravio da se text automatski osveži prilikom promene vrednosti za CurrentCulture.
Potpis
gramatika srpskog jezika
testovi iz srpskog jezika
jezičke nedoumice
Sviđa mi se1
Re: Prednost resource .resx fajlova za lokalizaciju u odnosu na neki ILocalization interfejs? 28.12.2011. u 09:50 · pre 180 meseci #5
Jednom kad se prozor kreira program može da menja kontrole u prozoru po svom nahođenju, da dodaje nove kontrole, briše stare, menja im propertyje, uključujući i tekst. Sistem prosto ne može da isprati sve ludorije koje programer može da smisli, i zato se tako nešto ni ne pokušava.
Re: Prednost resource .resx fajlova za lokalizaciju u odnosu na neki ILocalization interfejs? 28.12.2011. u 10:13 · pre 180 meseci #6
Meni je uvek bilo lakse i cistije da radim sa satelite assemblijima .
Ta menader resors klasa sto kaze wajda je u sustini jednostavna i treba da ima 1 metodu da za odredjeni kljuc vraca prevod za trazeni jezik.
Tako da glavna forma sadrzi u resx fajlu engleske tesktove dok svaki drugi prevod je u odvojenom assembliju.


Potpis
Viva lollapalooza
Re: Prednost resource .resx fajlova za lokalizaciju u odnosu na neki ILocalization interfejs? 28.12.2011. u 10:28 · pre 180 meseci #7
Citat:
Mihajlo Cvetanović:Sistem prosto ne može da isprati sve ludorije koje programer može da smisli, i zato se tako nešto ni ne pokušava.

Mislim da je to samo izgovor da se programerima/korisnicima podmetne bug kao feature :)

Potpis
gramatika srpskog jezika
testovi iz srpskog jezika
jezičke nedoumice
Re: Prednost resource .resx fajlova za lokalizaciju u odnosu na neki ILocalization interfejs? 28.12.2011. u 11:18 · pre 180 meseci #9
Hvala Dejane. Nisam znao da postoji tako automatizovani nacin za to. Tako je onda dosta jednostavnije za te nedinamicke elemente.Npr za MessageBox je nezgodno jer ne mozes da setujes property tako, neg moras iz koda da prosledis string, pa tada i nije neka olaksavajuca okolnost.
Re: Prednost resource .resx fajlova za lokalizaciju u odnosu na neki ILocalization interfejs? 28.12.2011. u 11:51 · pre 180 meseci #10
Citat:
Wajda.W:Npr za MessageBox je nezgodno jer ne mozes da setujes property tako, neg moras iz koda da prosledis string, pa tada i nije neka olaksavajuca okolnost.

Jeste olakšavajuće zato što imaš sve out of the box. Jer i da implementiraš neko svoje custom rešenje svakako ćeš morati da proslediš lokalizovani tekst kroz kod. Ukoliko ti .resx radi posao, koristi njega. Posebno ti mogu biti zanimljive ResXResourceReader i ResXResourceWriter klase (npr. povežeš ih sa Microsoft Translator ili Google Translate servisima i automatski kreiraš solidnu lokalizaciju za druge jezike).

E sad kao što Mihajlo kaže, uvek postoji neka koska. Možda trebaš da omogućiš korisnicima da sami menjaju tekst, a da pri tom ne sme da se radi rebuild aplikacije. Tada moraš da implementiraš custom rešenje, ali i da vodiš računa o mnogim stvarima jer nije isto lokalizovati web sajt i desktop aplikaciju.
Potpis
gramatika srpskog jezika
testovi iz srpskog jezika
jezičke nedoumice
Prijavite se da biste odgovorili u ovoj temi.PrijavaRegistracija

Premeštanje teme