Vælge tabel afhængig af user language

Tags:    php mysql sprog

Hej
Jeg er igang med at lave site til brug sammen med en gaming server, og dertil vil jeg godt lave en language-detection, som skal fortælle php hvilken tabel den skal hente data i. Dertil vil jeg også lave en mulighed for selv at skifte sproget.
Jeg havde tænkt på at installere et eller andet oversættelse via google translate, men når det kun drejer sig om at oversætte dansk til engelsk, så ville jeg ikke bruge en så dårlig oversættelse. Derfor har jeg besluttet at jeg vil lave det hele selv.
Jeg har allerede lavet mine 2 tabeller til indhold. De hedder content_da og content_en. I tabellerne er der ID, TITEL og TEKST felter.
Men hvordan får jeg den til at finde sproget på brugerens computer, og laver det således at danske, norske og svenske besøgende får vist den danske side og alle andre får den engelske?
Jeg har læst noget om sprogfiler her: http://www.udvikleren.dk/forum/24755/sprog-filer/




10 svar postet i denne tråd vises herunder
1 indlæg har modtaget i alt 8 karma
Sorter efter stemmer Sorter efter dato
Ca. således:

http://stackoverflow.com/questions/1352130/php-language-detection

Du skal dog huske at have en mulighed for manuelt at ændre sprog, da der kan sidde dansksproget personer bag en engelsksproget browser.



Måske GeoIP biblioteket kan være dig til hjælp. Dens formål er at finde ud af hvor i verden brugerens IP kommer fra, og du kan så på den baggrund tage affære :)

Tag et kig på det om ikke andet - http://php.net/manual/en/book.geoip.php


EDIT
Måske var jeg lige for hurtig på aftrækkeren. GeoIP biblioteket ser ud til at være mest brugbar for at finde ud af lokationen for andre Hosts IP'er, og ikke en besøgende brugers.

Michaels Eksempel er mere det der ligner en korrekt løsning på dit problem :)



Indlæg senest redigeret d. 15.05.2012 13:37 af Bruger #4487
Kiggede lidt i dit link michael og tror at jeg fandt noget brugbart, på et link i dit link.
Fold kodeboks ind/udPHP kode 

Har rettet det til mit behov, men nu skal jeg finde ud af hvordan jeg fortæller php hvornår den henter fra content_da eller content_en.
Kunne man evt. lave det således:
Fold kodeboks ind/udPHP kode 

Så bruger jeg den session i min mysql_query til at vælge tabel med. Jeg laver så en fil hvor jeg kan ændre sproget, men hvordan skal den laves, således at den ikke udfører ovenstående script igen?



Nedestående er noget pseudo PHP kode, men burde vise idéen nogenlunde.

Fold kodeboks ind/udPHP kode 


Alternativt kan du bruge et registry pattern til at registrere og udtrække værdien for $language:

Fold kodeboks ind/udPHP kode 




Indlæg senest redigeret d. 16.05.2012 11:36 af Bruger #10216
Det undrer mig lidt at der ikke er nogen der har sagt det endnu, men det lyder som en noget skæv måde at lave sprog-styring på - altså, at benytte flere tabeller - for det vil kræve en masse arbejde at udvide med nye sprog så. Du burde i stedet have det samlet i én tabel, hvor en af kolonnerne var netop sprog/sprogid så du let kan tilføje ekstra sprog uden at ændre kode/database.



Det kunne jeg også sagtens have gjort, dog er problemet det at jeg bruger feltet TITEL til at lave min menu med. Derfor har jeg lavet to tabeller



Hvad skulle problemet være i det?



@Michael
Det kode du har skrevet, er det et alternativ til det jeg skrev, eller er det en løsning på det med at jeg skal kunne ændre sproget manuelt?



begge dele, dog langt fra en færdig løsning.



ok. jeg synes bare ikke rigtig jeg kan se hvordan jeg kan bruge din kode som en basis til en løsning

EDIT:
Søgte lidt rundt på nettet og fandt et javascript der kunne finde sproget for mig, men skal lige finde ud af om jeg kan gemme den i en variabel i javascript, og så bruge den i PHP
Fold kodeboks ind/udJScript kode 

Eftersom at PHP normalt er serverside script og JavaScript er clientside, så kan jeg jo ikke få dem til kommunikere, eller hvordan?
Tænkte på at det måske kunne lade sig gøre at lave en variabel eller en funktion i PHP som udførte javascriptet og så trak serveren resultatet tilbage og så bad jeg PHP om at gøre følgende
Fold kodeboks ind/udPHP kode 

hvis den får et resultat fra javascript. JavaScriptet skal selvfølgelig rettes til, således at den gemmer en værdi i stedet for at omdirigere brugeren til en anden side.



Indlæg senest redigeret d. 16.05.2012 19:49 af Bruger #17072
t