Mvc multi language site

Pozdrav,

zanima me na koji nacin vi rjesavate visejezicnu stranicu.

Hvala unaprijed

Ima oko te teme dosta na forumu. Jedna opcija je preko nekakve lang datoteke, adruga opcija je preko baze. Meni osobno je draža ova prva. Pogledaj malo kako su to riješili CodeIgniter, Symfony, CackePHP i sl. te Wordpress, Joomla i sl.

Nekako iz zapažanja mi se čini da je za višejezični web najbolja opcija imati posebnu domenu za svaki jezik. Radim s Joomlom također sam koristio i Joomfish a i mogućnosti Joomle 1.7 sa ‘nativnom’ višejezičnošću i uglavnom se sve svodi na to da je na kraju najjednostavnije imati posebnu domenu za svaki jezik ili bar subdomene sa zasebnim stranicama na njima.

yep - upravo slažem takav, jedna skripta, beskonačno domena, svaka promovirana na svom tržištu :wink:

Ima i treća opcija za pohranu jezika - unutar samog templatea, tj. za svaki jezik novi template set; za dizajnere i prevoditelje predobro jer vide gdje sta ide. Mana je što ima više posla kod izmjena, al se šablonski brzo odradi. Prednost je jer i pojedini jezici imaju više razlika od samih riječi, od bannera nadalje. također PHP ne mora raditi desetke supstitucija niti učitavati razne (ili jedan veliki) language file.

CodeIgniter ima dobro rjesenje za višejezičan interface, dok se za sadržaj nisu baš potrudili.

Doduše, ima nekih i18n library-a, ali nisu baš na najvišem nivou.

Hmm, pitanje je za asp.net mvc, a vi o joomli … :slight_smile:

Uglavnom, 2 nacina:

  • global i local resources datoteke (.resx), asp.net ima support za to
  • baza

Kako god bilo, potrebno je prvo rijesiti MVC dio price, odnosno postaviti jezik threada.

Posto se radi o MVC aplikaciji, potrebno je namjestiti jezik citanjem tokena iz rute, znaci nesto tipa {lang}/{controller}/{action} ili slicno. Nakon sto se procita jezik, potrebno na u svakom requestu namjestiti jezik threada.

Primjer rute:

routes.MapRoute("Default","{lang}/{controller}/{action}/{id}",
   new { controller = "Home", action = "Index", id = "", lang = "hr" });

Za namjestiti jezik threada moze se iskoristiti filter koji ce se izvrsiti prije akcije:

public class MultilangAttribute : ActionFilterAttribute {

    public override void OnActionExecuting(ActionExecutingContext filterContext) {

        string lang = (string)filterContext.RouteData.Values["language"] ?? "hr";

        // TODO: za hr jezik je potrebno postaviti hr-HR, zato bi tu trebala ici logika za citanje kulture !!!
        string culture = "HR"; 

        Thread.CurrentThread.CurrentCulture = CultureInfo.GetCultureInfo(string.Format("{0}-{1}", lang, culture));
        Thread.CurrentThread.CurrentUICulture = CultureInfo.GetCultureInfo(string.Format("{0}-{1}", lang, culture));

    }
}

Ako se koriste local/global resources automatski ce se switchati potreban resx fajl.
Ako se jezici smjestaju u bazi, onda cijeli dohvat vise nema veze sa MVCom, i nalazio se negdje u poslovnoj logici aplikacije i relacijama u bazi. Tu postoje dvije glavne opcije, ili imati sve jezike u svakoj tablici (kao kolone), ili koristiti posebnu tablicu za prijevode, koje se referencira preko agregacijske tablice, ali to je vec druga tema …

Odakle si ovo iščitao? :hmmmmmm:

Ne razumijem. PA sadržaj objavljuje korisnik sam i piše na jeziku na kojem on hoće. Zar nije tako, pa kad imaš i npr. preveden WP i hoćeš tekstove na više jezika i dodaš neki ML plugin on ti doda u post area textboxove u koje ćeš upisati isti tekst na različitim jezicima.

Ili sam ja nešto potpuno krivo pokopčao.

Pa iz PROGRAMIRANJE/ASP I .NET grupe u kojoj se nalazi ovaj post!

Mislim da je pitanje iskljucivo vezano za visejezicnost u ASP.NET MVC aplikacijama, jer bi inace bilo u npr. “Razvoj softvera - teorija, praksa i alati” grupi.

[quote=“hudo”]Pa iz PROGRAMIRANJE/ASP I .NET grupe u kojoj se nalazi ovaj post!

Mislim da je pitanje iskljucivo vezano za visejezicnost u ASP.NET MVC aplikacijama, jer bi inace bilo u npr. “Razvoj softvera - teorija, praksa i alati” grupi.[/quote]

:klanjamse :krele: :krele: :krele:

Uopće ne gledam kategoriju u kojoj se pitanje nalazilo, jer obično odem na današnje poruke i to je to. I još jednom :krele:

Također isprike za moj post, mahinalno sam pogledao nove postove i bez gledanja kategorije našvrljo gluposti :krele:


Copyright © 2020 WM Forum - AboutContact - Sponsored by: Mydataknox & Webmaster.Ninja