Limbi multiple într-o aplicație MVC ASP.NET?

Care este cel mai bun mod de a suporta mai multe limbi pentru interfața într-o aplicație MVC ASP.NET? Am văzut că oamenii folosesc fișiere de resurse pentru alte aplicații. Este încă cea mai bună cale?

0
fr hi bn
adăugat autor Marijn, sursa
site-ul web cu mai multe limbi fără parametru de trecere, verificați acest Site multilingvistic în MVC 4 C#
adăugat autor Sender, sursa

6 răspunsuri

Resursele Da sunt în continuare cea mai bună modalitate de a sprijini mai multe limbi în mediul .NET. Deoarece sunt ușor de referat și chiar mai ușor de adăugat limbi noi.

Site.resx
Site.en.resx
Site.en-US.resx
Site.fr.resx
etc...

Deci, aveți dreptate încă să utilizați fișierele de resurse.

0
adăugat
Cum ar trebui acestea să fie plasate pentru ca aceasta să funcționeze?
adăugat autor Mathias Lykkegaard Lorenzen, sursa

Unele dintre celelalte soluții menționate ca răspuns nu funcționează pentru versiunea lansată a MVC (au lucrat cu versiuni anterioare de alfa / beta).

Iată un articol bun care descrie o modalitate de implementare a localizării, care va fi puternic tastată și nu va rupe unitatea de testare a controlorilor și a vizualizărilor: ghid de localizare pentru MVC v1

0
adăugat

Proiectul Orchard utilizează o metodă de comenzi rapide numită "T" pentru a face toate traducerile în șir de pagini. Deci veți vedea etichete cu un @T ("Un șir de traducere").

Intenționez să analizez modul în care acest lucru este implementat în spatele scenei și, eventual, să îl folosească în proiectele viitoare. Numele scurt păstrează codul de curățare, deoarece va fi folosit mult .

Ceea ce îmi place în legătură cu această abordare este șirul original (în acest caz limba engleză) este încă ușor vizibil în cod și nu necesită o căutare într-un instrument de resurse sau în altă locație pentru a decoda ce ar trebui să fie șirul real.

Consultați http://orchardproject.net pentru mai multe informații.

0
adăugat
Există cazuri în care șirul exact al sursei "A String to Translate" ar trebui tradus diferit în funcție de contextul înconjurător. Acest lucru se întâmplă în special cu șirurile cu un singur cuvânt.
adăugat autor springy76, sursa

Am găsit această resursă pentru a fi de mare ajutor

Împachetați-o în HttpContext.Current.GetGlobalResourceString și HttpContext.Current.GetLocalResourceString care vă permite să apelați resursele de acest gen ...

// default global resource
Html.Resource("GlobalResource, ResourceName")

// global resource with optional arguments for formatting
Html.Resource("GlobalResource, ResourceName", "foo", "bar")

// default local resource
Html.Resource("ResourceName")

// local resource with optional arguments for formatting
Html.Resource("ResourceName", "foo", "bar")

Singura problemă pe care am găsit-o este că controlorii nu au acces la șirurile de resouce locale.

0
adăugat

Dacă utilizați motoarele de vizualizare implicite, atunci resursele locale funcționează în vizualizări. Cu toate acestea, dacă aveți nevoie să obțineți șiruri de resurse în cadrul unei acțiuni a controlorului, nu puteți obține resurse locale și trebuie să utilizați resurse globale.

Acest lucru are sens atunci când vă gândiți la el, deoarece resursele locale sunt locale la o pagină aspx și în controler, nici măcar nu ați selectat vizualizarea dvs.

0
adăugat
@Haacked, hi, avem un site de cumpărături în asp mvc, așa că atunci când utilizatorul selectează limba arabă, dorim să facem întregul site arabic, putem folosi Microsoft bing traducător sau Microsoft traducător API sau ar trebui să cumpăr localize.js pentru a obține acest lucru rapid?
adăugat autor stom, sursa
acest lucru va funcționa, de asemenea, în motor de vizualizare razor?
adăugat autor Anwar Chandra, sursa
Da, acest lucru are sens pentru controlori. Dar ce zici cu View Models? Acestea sunt (adesea) specifice vizualizării și ar fi logic să se facă trimitere la resursele specifice din vizualizarea codului modelului. Mă întreb dacă există un mecanism de a face un fișier de resurse local într-o vizualizare și modelul său de vizualizare ...
adăugat autor Andy McCluggage, sursa

Aceasta este o altă opțiune și veți avea acces la ActualUICulture în controler:

Check MVC3-multi-language

0
adăugat