Avatar billede bartesque Nybegynder
22. januar 2010 - 13:58 Der er 7 kommentarer og
2 løsninger

Automatisk sprogvalg på hjemmesider

Jeg designer en hjemmeside til et firma, som vil have den i flere sprog.

Hvordan kan man ud fra lokaliteten af klienten (den som besøger siden) definere sproget. (og hvordan ved man det? IP adresse?)

Ligesom når man går ind på google.com i danmark, er siden på dansk i USA på engelsk og så videre.

I starten er det kun nødvendigt med 2 sprog. Dvs. dansk og Engelsk.

Jeg kunne forestille mig, at alle der går ind på siden fra dk, bliver sendt til /dk/ siden og alle fra udenlandske bliver sendt til den engelske version?
Avatar billede jesperfjoelner Nybegynder
22. januar 2010 - 14:34 #1
Du kan detektere hvorfra i verden kommer og vise dem en side baseret på det.
Jeg har en hjemmeside med en ligende løsning, hvor jeg bruger ASP, men du bruger selvfølgelig PHP/ASP, eller hvad du nu bruger.

Du kan downloade en stor tabel med alle verdens IP-adresser koblet med land.
Læs mere her http://ip-to-country.webhosting.info/
og download her
http://ip-to-country.webhosting.info/node/view/6?XID=19dcee2af53ca32a909c4dd0c076fbba

udtænk så en procedure som passer til din side.

Jeg bruger ASP. Jeg gør det at jeg, når folk besøger siden første gang tjekker om jeg om de kommer fra en anden intern side på mit site.

if instr(1, Request.ServerVariables("HTTP_REFERER"),"mitdomaenenavnudenendelse")

hvis ikke så fanger deres IP med
CurrentIP = IPAddressToNumber(request.ServerVariables("REMOTE_ADDR"))

og laver et opslag i den downloadede tabel (som jeg har importeret ind i min egen database og som jeg opdaterer med nogle måneders mellerum)

I tabellen er ip-numrene ikke angivet som ip-numre men som tal.
jeg bruger denne funktion til at finde det nummer der svarer til en IP-adresse.

Function IPAddressToNumber(IPaddress)
  Dim i, pos, PrevPos, num
  If IPaddress = "" Then
    IPAddressToNumber = 0
  Else
    For i = 1 To 4
        pos = InStr(PrevPos + 1, IPaddress, ".", 1)
        If i = 4 Then
            pos = Len(IPaddress) + 1
        End If
        num = Int(Mid(IPaddress, PrevPos + 1, pos - PrevPos - 1))
        PrevPos = pos
        IPAddressToNumber = ((num Mod 256) * (256 ^ (4 - i))) + IPAddressToNumber
    Next
  End If
End Function


jeg bruger så noget i stil med

SQL = "SELECT CountryCode2,landDK,landUK,sprog FROM tblIPcountry WHERE IPstart<" & CurrentIP & " AND IPend>" & CurrentIP

og finder dermed ud af hvilket land de kommer fra.

Det er så derefter bare at viderestille dem til siden med det rigtige sprog.
Avatar billede arne_v Ekspert
22. januar 2010 - 14:50 #2
Du kan bruge IP addresse. Jeg har skrevet en stribe artikler om det for forskellige sprog.

PHP: http://www.eksperten.dk/guide/568
ASP: http://www.eksperten.dk/guide/567
ASP.NET: http://www.eksperten.dk/guide/565
Java EE: http://www.eksperten.dk/guide/564

Men du kunne ogs vaelge at bruge HTTP header Accept-Language. Maaske giver det bedre valg.
Avatar billede bartesque Nybegynder
27. januar 2010 - 09:11 #3
Tak for hjælpen begge. Til opgaven virker det dog overkill, at benytte.
Avatar billede arne_v Ekspert
27. januar 2010 - 15:22 #4
Saa hvorfor saa ikke bare bruge Accept-Language ?
Avatar billede bartesque Nybegynder
27. januar 2010 - 20:12 #5
Har søgt lidt omkring accept language, men hvordan fungerer det så?

At man i applikations-headeren tilføjer en accept-language? Hvordan ved man hvilket sprog klienten bruger (er det iflg. browser-indstillingerne?)

Skal jeg oprette en ny tråd når jeg spørger?
Avatar billede arne_v Ekspert
27. januar 2010 - 20:57 #6
Browseren sender normalt altid en accept-language header.

Din web app aflaeser denne og vaelger sprog udfra den.

En person i Danmark med Windows og FireFox i engelsk udgave faar maaske nok en engelsk side, men personen maa jo antages at kune laese engelsk, naar der bruges engelske versioner.

Hvorfor ny traad ? Det er jo praecis dette du spurgte om !
Avatar billede bartesque Nybegynder
28. januar 2010 - 11:06 #7
Ok, så applikationsheaderen definerer allerede accepterede sprog ud fra browser-sprog. Jeg tror er med på konceptet nu arne_v. Mange tak for svar.



Jeg giver gerne flere point, men nu fik jeg vidst givet dem alle til jesperfjoelner.
Avatar billede arne_v Ekspert
28. januar 2010 - 15:19 #8
Du har slet ikke uddelt point nu.

Hvis jeg smider et svar kan du fordele dem efter behag.
Avatar billede arne_v Ekspert
01. marts 2010 - 02:54 #9
?
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

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