02. oktober 2003 - 17:40Der er
20 kommentarer og 1 løsning
Automatisk valg af sprog
Hej eksperter...
Jeg har brugt en stump kode i index.php til at definere om en side skal være dansk, engelsk eller tysk. Dette har da også virket fint, indtil jeg uploadede en side til en nyt webhotel: Nu starter siden med engelsk sprog og jeg kan ikke skifte det ved en <A HREF=index.php?sprog=da>
else if ($HTTP_ACCEPT_LANGUAGE == "en") $language = $HTTP_ACCEPT_LANGUAGE; else if ($HTTP_ACCEPT_LANGUAGE == "da") $language = $HTTP_ACCEPT_LANGUAGE; else if ($HTTP_ACCEPT_LANGUAGE == "de") $language = $HTTP_ACCEPT_LANGUAGE;
else $language = "en";
if ($language == 'en') { include "index_en.php"; } if ($language == 'da') { include "index_da.php"; } if ($language == 'de') { include "index_de.php"; } ?> -- cut --
I lang tid har samarbejdsbranchen fokuseret på at forbedre enhedsfunktioner – bedre kameraer, klarere lyd og smartere software. Men den virkelige forvandling handler ikke om funktioner.
Tror det er helt som schaefner siger at du mangler $sprog = $_GET['sprog'];
Det er fordi din egen server har kørt med register_globals on og serveren af sikkerhedsgrunde kører med den off. Mener det er blevet standard at det er off (eller er det først i fremtidige versioner?)
Koden burde dog kunne reduceres kraftigt. Har heller ikke testet om den rent faktisk virker, da jeg skal smutte nu. Måske du også kan bruge noget herfra:
schaefner --> Har testet din kode på min egen webserver og ser helt fint ud, men der er 1 ting som du bliver nød til at lave om: Når jeg f.eks. er på den side med dansk sprog og klikker på et link (<A HREF=index.php?sprog=en>) så sproget ændres til engelsk, ændres det ikke ved klikket - dette først når jeg har klikket 1 gang mere rundt på siden...
Det er jo fordi du først "kan se" cookien ved næste load af siden. Hvis du laver valg af sprog til et link til f.eks. lang.php, kan du her sætte cookien, og derefter lav en header for at se sprogvalg med det samme.
Okay, hvordan skal index.php så se ud? og så skal index_da.php altså bare starte med (osv..): --cut-- <? setcookie("languageCookie", da); ?> --cut-- ???
hmm, kikkede først nu på schaefners links, og det kunne jo godt bruges til noget! :O) Omend at en bruger her i DK jo sagtens helst vil bruge engelsk :O)
Prøv at læs tråden fra start: schaefner har løst problemet med index.php - her indsættes eks. index_da.php. Hvis man så ønsker andet sprog bruger man linket <A HREF=index.php?sprog=en> i index_da.php og den skifter side - men først efter man har reloadet siden 1 gang til (altså så cookie træder i kraft).
Hvordan får jeg dette ændret så den skifter med det samme? Det gav du selv svaret på, men kan du ikke lave koden ud fra schaefner's?
<?php // Indstillinger $languages = array('da','en','de'); // forkortelser for de sprog der kan benyttes $default = 'default language'; // default sprog, f.eks. da
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.