Brugernavn:




Kodeord: Husk
Forside Forum Artikler Downloads Søg
 

Php med Localization

Forord

Jeg vil her prøve at gennemgå en simpel måde at tilføje localization til ens hjemmeside på.
Der er meget arbejde bag det, men når man først har lavet grund tingene er det bare at arbejde derudaf. Det kræver du har en smule kendskab til php!

Hej alle.

Lidt før-information.

Det at have en god mappe-struktur på ens hjemmeside er ofte vigtigt for at man senere hen kan finde sine filer nemt igen.

Den metode jeg anvender til mappe-struktur på mine localization filer:

/language/da
/language/en
/language/fr
/language/de


Er blot et eksempel på hvordan det kan se ud.

I denne artikel vil jeg bruge min mappe-struktur til at bygge koden ud fra, den bliver simpel, så i senere hen kan rette til at passe på jeres.

Lad os ligge ud med at lave vores localization filer.
inde i hver af de mapper, opretter vi en ny fil kaldet: localization.php

I denne fil skriver vi følgende:
  1. //Dette er den danske localization fil
  2. $lang["FRONT_HOME"] = "Hjem";
  3. $lang["FRONT_CASES"] = "Referencer";
  4. $lang["FRONT_CONTACT"] = "Kontakt";
  5. $lang["FRONT_ABOUT_ME"] = "Om mig

Dette gentager vi så i den engelsk, franske og tyske mappe, bare hvor teksten til sidst i gåse-øjnene er oversat til det andet sprog.

Nu har vi angivet hvad de forskellige variabler hedder, og kan derfor gå til næste skridt i vores kode, at finde ud af hvilket sprog der skal indlæses.

Det kan vi gøre på følgende måde:
  1.      function txt($text){
  2.         if($sprog == "da"){
  3.             include("./languages/da/localization.php");
  4.                 return $lang[$text];
  5.         }
  6.         if($sprog == "en"){
  7.             include("./languages/en/localization.php");
  8.                 return $lang[$text];
  9.         }
  10.         if($sprog == "fr"){
  11.             include("./languages/fr/localization.php");
  12.                 return $lang[$text];
  13.         }
  14.         if($sprog == "de"){
  15.             include("./languages/de/localization.php");
  16.                 return $lang[$text];
  17.         }
  18.     }
Koden ovenover er grund-eksemplet på hvordan vi inkludere vores forskellige filer.

Man kan nu vælge at gøre det enten via en $_SESSION eller en Cookie. Jeg vil vise jer hvordan man kan tjekke for hvad enten en session er sat, eller om der er en cookie der indeholder hvad sprog man vil se.

  1.     function txt($text){
  2.     
  3.         if(isset($_SESSION["language"])){ // Hvis session er sat, vælg den
  4.             $sprog = $_SESSION["language"];
  5.         }
  6.         elseif(isset($_COOKIE["PageLanguage"])){ // Hvis ikke session er sat, så vælg cookie
  7.             $sprog = $_COOKIE["PageLanguage"];
  8.         } else { // Hvis ingen af delene er sat, vælg default sprog
  9.             $sprog = "da";
  10.         }
  11.         if($sprog == "da"){
  12.             include("./languages/da/localization.php");
  13.                 return $lang[$text];
  14.         }
  15.         if($sprog == "en"){
  16.             include("./languages/en/localization.php");
  17.                 return $lang[$text];
  18.         }
  19.         if($sprog == "fr"){
  20.             include("./languages/fr/localization.php");
  21.                 return $lang[$text];
  22.         }
  23.         if($sprog == "de"){
  24.             include("./languages/de/localization.php");
  25.                 return $lang[$text];
  26.         }
  27.     }
Der er lidt forklaring af koden inde i selve koden, resten af det, er det samme som tidligere.

Nu skal vi til den del, hvor brugeren kan vælge hvilket sprog der skal vises.
Opret en ny php fil kaldet: languageSelect.php

I denne fil skriver vi følgende
  1.     $mode = $_GET["mode"];
  2.     $language = $_GET["language"];
  3.     
  4.     switch($mode){
  5.         case "session": // Hvis $mode indeholder session, så sætter vi en session
  6.             $_SESSION["language"] = $language;
  7.         break;
  8.         case "cookie": // Hvis  $mode indeholder cookie, så sætter vi en cookie istedet
  9.             setcookie("PageLanguage", $language, time()+3600*24*7); // Denne cookie er sat til at udløbe om 7 dage.
  10.         break;
  11.     }
Det er en simpel metode vi kan bruge til at skifte sproget på.

Nu er vi næsten ved vejs ende, nu mangler vi blot den funktion fra tidligere så vi kan udskrive vores tekst i sproget.

For at hente værdien
  • FRONT_HOME

Skal vi skrive:
  • <?php echo txt("FRONT_HOME"); ?>

Nu vil den udskrive den korrekte tekst man har alt efter om man har en cookie eller session sat.

Håber det kunne bruges. Lig gerne en kommentar hvis i støder på fejl eller lignende, så skal jeg se om jeg kan hjælpe jer.

Cheers,
Mads Jürgensen.
Oprettet af:

PHP

Point modtaget: 150

Rate:
17:09 11/09/2009

Kommentarer

Giv din mening tilkende om denne artikel, eller læs andres.
Har du spørgsmål eller brug for hjælp til denne artikel henvises du til forummet.
Nice, lige hvad jeg også har søgt efter, jeg vil kigge mere på det! - Du kunne måske lave en dropdown med sprogene i? Det ville være fedt!
Sidst redigeret 18:43 11/09/2009
Oprettet af:
  Mail
18:42 11/09/2009
Det kan du sagtens..

og så tilføje et jQuery script der kalder den angivne side når du skifter værdi på dropdown og så den opdatere..
Det kan snildt laves :)
Oprettet af:
  Mail
20:10 11/09/2009
Din overskrift burde måske mere været noget omrking sprog istedet for localisation. Jeg troede din overskrift henvendte sig til IP localisation.
Oprettet af:
  Mail
11:01 12/09/2009
Enig med Danni, havde lige håbet =D.
Oprettet af:
  Mail
17:47 21/09/2009
Dejligt med en artikel om det, har været væk fra php'en i lang tid, så det er godt at få det frisket lidt op igen :)
Oprettet af:
  Mail
22:39 22/09/2009
Du skal være oprettet og logget ind for at kommentere en artikel
Copyright © Rowl.dk v/ Michael Raagaard | 2005-12 | Alle rettigheder forbeholdes