28. september 2006 - 12:16Der er
17 kommentarer og 1 løsning
Localization asp.net 2.0
Hejsa...
Jeg er ved at lave en hjemmeside i to sprog. Dertil har jeg lagt alle div. tekster i globale resx filer. På min Master page har jeg placeret to små flag, som brugeren skal kunne trykke på for at ændre siden sprog. Men jeg er lige i tvivl omkring, hvordan jeg skal gøre resten.
I min Default.aspx side har jeg overriddet følgende metode:
Dette virker kun delvist...dvs. hvis teskten er på dansk og jeg klikker på det engelske flag, så skal jeg efterfølgende selv trykke F5/Refresh for at sproget på siden skifter.
Hos Computerworld it-jobbank er vi stolte af at fortsætte det gode partnerskab med folkene bag IT-DAY – efter vores mening Danmarks bedste karrieremesse for unge og erfarne it-kandidater.
De gør det på en anden måde... men forstår det ikke rigitgt...hvordan pokker for de cultureInfo ud fra: DropDownList1.UniqueID; ??? og desuden findes der ikke nogen metode i global filen som hedder: void Application_BeginRequest(Object sender, EventArgs e)...er det en man selv skal oprette?
Hvis du er helt med, ville det være fedt hvis du kunne lave et eks. med to knapperog session var. i stedet for...
if (!IsPostBack) { // Det er en måde at styrre sprogstyrringen fra MasterPage, det håndteres så i global.asax sprog.Text = CultureInfo.CurrentCulture.ToString(); dansk_btn.OnClientClick = "document." + form1.UniqueID + "." + sprog.UniqueID + ".value='da'"; engelsk_btn.OnClientClick = "document." + form1.UniqueID + "." + sprog.UniqueID + ".value='en-us'";
HttpCookie cookie = new HttpCookie("sprog_tmp"); cookie.Value = sprog.UniqueID; Response.SetCookie(cookie);
Global.asax: void Application_BeginRequest(Object sender, EventArgs e) { string lang = string.Empty;//default to the invariant culture HttpCookie cookie = Request.Cookies["sprog_tmp"];
if (cookie != null && cookie.Value != null) { // Dette tjek er nødvendig da Application_BeginRequest bliver // kaldt flere gange når der er billeder på siden. if (Request.Form[cookie.Value] != null) { lang = Request.Form[cookie.Value];
HttpCookie cookie1 = new HttpCookie("sprog", lang); cookie1.Expires = DateTime.Now.AddYears(100); Response.Cookies.Add(cookie1); } else if (Request.Cookies["sprog"] != null) lang = Request.Cookies["sprog"].Value;
hey...sorry...det virker nu! :) det var blot pga. jeg havde et form tag i et form tag...
Et sidste spg... jeg vil gerne have at det virker sådan, at default sproget bliver sat til den sprog browseren benytter og hvis brugeren ønsker at ændre sproget så klikke brugeren blot på et af flagene.
Lige nu har jeg kun sat Dansk sprog til i IE. Men idet ressource filer i default versionen er på engelsk, ja så vises siden på engelsk når den loades første gang.
Jeg har prøvet med følgende kode i Page directive i toppen Default siden:
Culture="auto" UICulture="auto"
Det ændre teksten til det browseren benytter - Men tilgengæld gør det så at sproget IKKE skifter på Default siden når man klikker på flagene...??
Såå....hva skal jeg så gøre?? i mit Page directiv i Default siden... har jeg sat følgende kode ind:
Så kan du gøre noget ala det her i din global.asax:
void Session_Start(object sender, EventArgs e) {
string sprog = null;
try { // Her kontroleres om klienten har været her før, og hvis dette er // tilfældet sættes det sprog som de valgte sidst if (Request.Cookies["sprog"] != null) { sprog = Request.Cookies["sprog"].Value;
string sprogTmp = sprog.Substring(0, 2); // Hvis den er forskellige for nogle af de sprog der er tilgængelig // På sitet, sættes sproget til engelsk if (sprogTmp != "da" && sprogTmp != "en") sprog = "en"; } } catch { sprog = "en"; }
C-Sharp >> lækkert!! læg et svar og få dine velfortjente points...
By the way...hvordan fikser jeg localization for seperate sider...med det mener jeg...sider som ikke er content pages...og dermed ikke har noget med master pagen at gøre...?
Tænkte på...jeg bruger også localization til min web.Sitemap fil...det virker delvist...dvs. at teksterne hentes på et af de to sprog når siden loades - men når jeg klikker på et af mine flag så skifter teksterne i min menu ikke...?
Det var ikke i InitializeCulture,men i dine event-metoder - det stod rimeligt klart og tydeligt. Den løsning fra c-sharp er totalt overkill, men dig om det.
og det virker også fint....MEN ...teksten skifter bare ikke med det sammen i menu'en når jeg klikker på flagene...det er først når jeg loader siden igen...at sproget ændre sig til det jeg klikkede på inden jeg lukkede siden ned for at starte den op igen...Hvordan kan jeg ændre dette?
wwee...SÅ lykkedes det....jeg kaldte blot Databind på min menu i load metoden! very simple...
Synes godt om
Ny brugerNybegynder
Din løsning...
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.