1
Tags:
asp
Skrevet af
Bruger #8773
@ 15.06.2006
Jeg har nu selv på en del sider brugt en funktion til at lave siden fler-sproget, og eftersom jeg selv havde meget problem med at lave det første gang, vil jeg hjælpe alle jer andre der sidder og har brug for noget lignende.
Funktionene vi vil kigge på vil gøre sådan at du kan klikke på fx. et flag, eller et link, og så skifter sproget på hele siden.
Det vil nok være en fordel hvis du tidligere har arbejdet med, eller har kendskab til: SSI(Server Side Include) og cookies.
Vi vil i denne artikel kun bruge Dansk og Engelsk.
først skal vi have lavet nogle link til at skifte sproget, og det gør vi sådan her:
<li>
<li><a href="skiftsp.asp?lang=da">Dansk</a></li>
<li><a href="skiftsp.asp?lang=eng">English</a></li>
De kan fx. ligge nedderst i en menu eller hvor man nu vil placerer dem.
Så skal vi have skiftsp.asp filen:
<%
If Request.Cookies <> "" Then ' Hvis der er en cookie på klientens computer
Response.Cookies("SITE").Expires = Date-1
End If
'vi fjerner evt. eksisterende cookies
If Request.Querystring = "da" Then ' Hvis dansk er valgt
Response.Cookies("SITE")("SPROG") = "da"
ElseIf Request.Querystring = "eng" Then ' Hvis engelsk er valgt
Response.Cookies("SITE")("SPROG") = "eng"
End If
Response.Cookies("SITE").Expires = Date+30
'her opretter vi en cookie som sørger for at sproget for dig er det valgte de næste 30 dage.
Response.Redirect("default.asp")'Vi går tilbage til forsiden
%>
Som der kan ses i koden bruger vi en cookie til at lægge på computeren med det valgte sprog, og den cookie varer de næste 30 dage, med mindre at man ændrer sprog, og derfor bruger vi lige en funktion i toppen af koden til at fjerne evt. eksisterende cookies.
så skal vi bare have "default.asp" til at finde ud af hvad for et sprog klienten har valgt, og hvis intet sprog er valgt, bruges standartsproget, som i dette tilfælde er dansk.
koden:
<%
If Request.Cookies("SITE")("SPROG") = "da" Then'hvis sproget dansk er valgt inkluderer vi filen "dansk.txt"
%>
<!--#Include File="dansk.txt"-->
<%
ElseIf Request.Cookies("SITE")("SPROG") = "eng" Then ' vis sproget engelsk er valgt inkluderer vi filen "engelsk.txt"
%>
<!--#include File="engelsk.txt"-->
<%
Else' hvis intet sprog er valgt inkluderer vi filen "dansk.txt"
%>
<!--#Include File="dansk.txt"-->
Så har vi også siden til at finde ud af hvad for et sprog der er valgt, så mangler vi bare at lave sprog-filerne og sørge for et udskrive indholdet af filerne.
først filen dansk.txt:
<%
sp1 = "Velkommen"
sp2 = "Hjem"
sp3 = "kontakt"
%>
Og så filen engelsk.txt:
<%
sp1 = "Welcome"
sp2 = "Home"
sp3 = "Contact"
%>
Nu har vi de to sprog filer, og de er inkluderet i default.asp, så mangler vi bare at udskrive indholdet, og det gør vi sådan her (forsiden):
<% = sp1 ' udskriver "velkommen/Welcome" efter valgte sprog %>
<% = sp2 ' udskriver "Hjem/Home" efter valgte sprog %>
<% = sp3 ' udskriver "Kontakt/Contact" efter valgte sprog %>
Jeg håber at denne artikel var til at forstå, ellers må i kontakte mig, eller skrive en kommentar.
Hvad synes du om denne artikel? Giv din mening til kende ved at stemme via pilene til venstre og/eller lægge en kommentar herunder.
Del også gerne artiklen med dine Facebook venner:
Kommentarer (8)
Og hvis brugeren af disabled cookies? ... Dette er ikke en speciel fleksibel løsning på en flersprogsproblematik.
så kunne man jo evt. vælge at bruge en Session, problemet er bare, at så er det ikke det valgte sprog hver gang klienten åbner browseren. Man kunne jo også lave sådan, at når brugeren vælger et sprog, bliver det lagt i en database, sammen med klientens IP og så kan serveren også finde ud af hvad for et sprog der er valgt, og dog. Hvis man, som jeg, har en unik IP der skifter en gang imellem, så er dette heller ikke en god løsning. Men der er svært at lave en løsning hvor der ikk er et problem indblandet.
Ja eller gemme en application samt ipen lidt ala: eng192.168.0.9.
Så kunne man sige Mid(eng19216809, 3) for at få fat i ipen igen. På den måde kan man tjekke hvilken ip der er gemt fra, og samtidig tjekke de første tre bogstaver for at undersøge hvilket sprog der er valgt.
Ja, der er mange måder man kan lave det på, dette var blot et eksempel på hvordan det kunne gøres.
"så kunne man jo evt. vælge at bruge en Session"
Nej det kunne du desværre ikke smarte, da sessions ikke virker, når cookies heller ikke virker...
I dette eksempel, ska vi huske på, at den processer ALLE includes selvom du laver din if sætning, dvs. har du 100 sprogfiler vil den skulle processe dem HVER gang du loader default.asp siden.
"Hvis man, som jeg, har en unik IP der skifter en gang imellem"
Det hedder ikke en unik ip, men dynamisk.. Det er jo netop IKKE unik. Men du har fat i den lange ende, da det er rigtigt at man ikk kan bruge det med ip-adresserne til meget.. Bortset fra, at et ip-span (fx 212.10.*.*) osv oftest er optaget af fx Stofanet, som kun har danske kunder, og så er chancen for at en dansk bruger får den ip, en anden har "valgt" skulle være dansk, har haft... (Kludret formuleret, er træt
)
Jeg kan godt se at det vil tage laaaang tid med 100 sprogfiler, men hvor mange mennesker har også en hjemmeside på 100 forskællige sprog. ? ikke ret mange.. Men det her var kun et eksempel på hvordan det kunne gøres.
Puha...
Det kan dog også gøres på en langt simplere måde - dog uden ASP. Det kræver dog en diciplineret fil-navngivning og mappe-struktur. Se hvordan de har gjort det på www.stilleben.dk
man kunne jo teste på browserens sprog, og lade det være valget. Hvis den kører på dansk, så kan brugeren nok også dette, og ellers så kør på engelsk.
Du skal være
logget ind for at skrive en kommentar.