Avatar billede c-sharp Nybegynder
29. april 2004 - 12:02 Der er 13 kommentarer og
1 løsning

skifte sprog ved brug af Satellite assemblies

Jeg har lavet et site som gør brug af Satellite assemblies, jeg ved bare ikke helt hvordan jeg skal skifte sprog.

Jeg initialiserer mine label's i page_load.

Jeg har lavet 3 knapper, en for hvert sprog siden understøtter, når man trykker på en af knapperne gør den følgende:

Thread.CurrentThread.CurrentUICulture = CultureInfo.CreateSpecificCulture("da-DK");

problemer er så bare at på daværende tidspunkt er page_load blevet kald, og mine label's er blevet initialiseret med tekster for det nuværende sprog.

Så kunne jeg selvfølgelige initialisere dem igen men er der ikke en bedre løsning?

et andet problem er at når jeg vælger en ny side, vender den tilbage til standard sproget, hvordan undgår jeg dette?
Avatar billede jakobg Nybegynder
29. april 2004 - 12:08 #1
Jeg har tidligere lavet et længere indlæg om Satellite assemblies, måske kan du bruge det?

http://www.eksperten.dk/spm/466244

Hvad med at flytte dine initialiseringer af labels ud i en sub, som du så kan kalde igen, når teksten skal ændres? Husk at teste for Page.IsPostBack i din OnLoad event.

Mht. at gemme sprogvalget, så kan du smide det i session variabel så det ikke bliver glemt mellem siderne.
Avatar billede c-sharp Nybegynder
05. maj 2004 - 06:30 #2
Der er vist forsvundet noget her!

Nå jeg har lige et par spørgsmål mere.

Jeg har i min global.asax denne linie. Thread.CurrentThread.CurrentUICulture = CultureInfo.CreateSpecificCulture("da-DK");

Den sætter standard sproget og den virker på alle undersider, hvordan kan det så være at når jeg sætter denne på en side at den ikke bliver ved med at virke (så snart jeg skifter side er den tilbage til den der er sat i global.asax)?

Hvordan kan jeg sætter sproget til det sprog der er valgt i browseren?
Avatar billede jakobg Nybegynder
05. maj 2004 - 09:18 #3
Du sætter sproget til browserens med følgende linier:

Threading.Thread.CurrentThread.CurrentCulture = Globalization.CultureInfo.CreateSpecificCulture(Request.UserLanguages(0))
Threading.Thread.CurrentThread.CurrentUICulture = New Globalization.CultureInfo(Request.UserLanguages(0))

Og så vidt jeg lige kan forstå, så virker din kode da som den skal: Siderne anvender dén værdi, der er sat i global.asax, med mindre der er angivet noget andet på den enkelte side?
Avatar billede c-sharp Nybegynder
05. maj 2004 - 09:59 #4
Der noget jeg ikke helt forstår, hvor kan jeg i global.asax sætte sproget uden at skulle ligge det i en session, mens jeg skal ligge det i en session når jeg skifter sprog på den enkelte side?
Avatar billede jakobg Nybegynder
05. maj 2004 - 11:37 #5
Hvis sprogvalget er individuelt, skal du ikke sætte det i global.asax: Så er det jo den enkelte besøgende der afgør det.
Du skal med andre ord sætte brugerens valg på hver side, og den nemmeste måde at gemme valget fra side til side, er at smide det i en Session-variabel...
Avatar billede c-sharp Nybegynder
05. maj 2004 - 11:57 #6
Jeg tror vi taler lidt forbi hinanden.

Min side skal fungere på følgende måde:

Når en bruger kommer ind på siden skal den vises på det sprog der er valgt i personens windows. Der skal også være mulighed for at ændre det sprog siden bliver vist i, dette kan gøres på de enkelte sider.

Når jeg har sat koden i global.asax:

Threading.Thread.CurrentThread.CurrentCulture = Globalization.CultureInfo.CreateSpecificCulture(Request.UserLanguages(0))
Threading.Thread.CurrentThread.CurrentUICulture = New Globalization.CultureInfo(Request.UserLanguages(0))

Vises siden for den enkelte bruger i det sprog personens windows afvikles i.

Det jeg ikke helt forstår er hvorfor jeg skal sætte sproget på hver side når man i global.asax kan nøjes med at sætte det en gang.
Avatar billede jakobg Nybegynder
05. maj 2004 - 13:02 #7
Meningen med global.asax er, at det er gældende for hele websitet og alle dets brugere: Med mindre du angiver andet på de enkelte sider, er det den værdi fra global.asax der gælder.
Hvis brugeren derfor vælger et andet sprog, bliver du jo nød til at sætte det på hver side som brugeren browser.

På den siderne laver du bare et tjek på, om brugeren har lavet et valg tidligere (dvs. din Session-variabel med sprog-valget er tom), og sætter sproget for siden derefter.

I hvilken event i global.asax sætter du sproget? Application_Start eller Session_Start?
Avatar billede c-sharp Nybegynder
05. maj 2004 - 13:09 #8
Jeg laver den i Application_BeginRequest

Og efter hvad jeg har testet mig frem virker det fint, hver bruger ser siden på sit eget sprog, også selv om der er flere inde på engang.
Avatar billede jakobg Nybegynder
05. maj 2004 - 13:22 #9
Hvis brugeren kan vælge sprog på alle siderne, kommer du ikke udenom at skulle sætte sproget på et eller andet tidspunkt på hver eneste side: Derfor kan du ligeså godt droppe koden i global.asax, og lave en sub der ordner det på hver side.
Det er forresten oplagt at ligge den slags funktionalitet en baseclass, som du så nedarver dine aspx-siders codebehind fra.
Avatar billede c-sharp Nybegynder
05. maj 2004 - 13:56 #10
Jeg vil bare gerne forstå hvorfor jeg i global.asax kan sætte sproget en gang også slår den igennen på alle siderne, uden at jeg skal bruge session eller nogen anden for midlertidig variabel
Avatar billede c-sharp Nybegynder
06. maj 2004 - 09:34 #11
Jakobg>> Har du opgivet mig?
Avatar billede jakobg Nybegynder
06. maj 2004 - 11:15 #12
Jeps, jeg beklager..
Avatar billede c-sharp Nybegynder
06. maj 2004 - 12:00 #13
Nå men det er ok.

Jeg tror jeg bruger cookies til at gemme det valgt spog. Kan man i asp.net undersøge om der kan oprettes en cookie på client maskinen, og hvis ikke der kan så bruge session istedet?

Nå men eller blev det vel lukketid,

jakobg>> En stor tak for dit ihærdige forsøge på at skære tingene ud i pap for mig (forstår det stadig ikke helt :-)).
Avatar billede jakobg Nybegynder
06. maj 2004 - 12:11 #14
Request.Browser.Cookies
viser om browseren understøtter cookies, men ikke om de rent faktisk er slået til: Den bedste måde at være HELT sikker på, er at oprette en cookie, og så forsøge at læse den igen fra en anden side. Ikke så kønt, men effektivt... Du kan evt. Redirect'e til den side, som tjekker din cookie.

Og det var vist et helt nyt spørgsmål? :)
Avatar billede Ny bruger Nybegynder

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.

Loading billede Opret Preview
Kategori
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester