login  Naam:   Wachtwoord: 
Registreer je!
 Forum

Site in meerdere talen

Offline Roosje - 25/09/2004 14:48 (laatste wijziging 25/09/2004 14:49)
Avatar van RoosjeNieuw lid Ik wil graag mijn site in meerdere talen maken, met Nederlands als standaard taal. Men kan een andere taal kiezen via een link. Ik wil graag voor elke taal één bestand hebben met vertalingen.

Ik gebruik onderstaande codes, maar
als ik index.php?taal=en gebruik, krijg ik toch de Nederlandse taal te zien. Ik heb al meerdere topics hierover gelezen, maar tot op heden lukt het me niet.

Ik hoop dat jullie me kunnen helpen! Alvast bedankt!

Groetjes,
Roosje

  1. //index.php
  2.  
  3. <?php
  4. if ($taal == "nl") {
  5. include ("lang/dutch.php");
  6. }
  7. elseif ($taal == "en") {
  8. include ("lang/english.php");
  9. }
  10. else {
  11. include ("lang/dutch.php");
  12. }
  13. ?>
  14.  
  15. // willekeurige pagina
  16. <? echo "" . kies_taal . "" ; ?>
  17.  
  18.  
  19. // lang/english.php
  20. define ("kies_taal","Choose your language");





12 antwoorden

Gesponsorde links
Offline Dennis - 25/09/2004 14:56 (laatste wijziging 25/09/2004 15:04)
Avatar van Dennis Gouden medaille

Grafische expert
  1. <?php
  2. if ($taal == "nl")
  3. {
  4. include ("lang/dutch.php");
  5. }
  6. if ($taal == "en") {
  7. include ("lang/english.php");
  8. }
  9. else {
  10. include ("lang/dutch.php");
  11. }
  12. ?>


  1. if ($taal == "en")
  2. {
  3. include ("lang/english.php");
  4. }
Offline Maarten - 25/09/2004 15:14
Avatar van Maarten Erelid gewoon:

"BEFORE ENTERING THIS SITE, PLEASE LEARN DUTCH."
Offline Thomas - 25/09/2004 15:26 (laatste wijziging 25/09/2004 15:27)
Avatar van Thomas Moderator Hehe.

Ik zou een soort van selectbox op je site zetten, die standaard op de standaard taal staat. Wanneer iemand een andere taal selecteert, kun je bijvoorbeeld een cookie setten waarin de taal-van-voorkeur staat opgeslagen.

Als het cookie niet geset is, pak je de default taal.
Als het cookie wel geset is, pak je de taal die in het cookie staat opgeslagen.

Als je de taal-van-voorkeur wilt bepalen aan de hand van de URL (index.php?taal=en), moet je $_GET (superglobal) gebruiken om de taal uit je URL halen - als register_globals af staat (dit is standaard vanaf PHP versie 4.1.0 ofzo), kun je de variabele 'taal' uit je URL niet meer simpelweg benaderen via $taal.

Je code dient er dus als volgt uit te zien :
  1. <?php
  2. if(isset($_GET['taal'])) {
  3. // er staat een taal in de URL
  4. switch($_GET['taal']) {
  5. // engels
  6. case "en": include("lang/english.php"); break;
  7. // nederlands
  8. case "nl": include("lang/dutch.php"); break;
  9. // onbekend
  10. default: include("lang/dutch.php"); break;
  11. }
  12. } else {
  13. // geen taal ingevuld, pak de default
  14. include("lang/dutch.php");
  15. }
  16. ?>
Offline Roosje - 25/09/2004 15:45
Avatar van Roosje Nieuw lid De register_globals staan inderdaad uit. Dus bovenstaande code is niet van toepassing. Ik neem aan dat je met die Cookies zoiets bedoelt?

  1. <?
  2. If($_COOKIE['taal']=="nl"){
  3. include("lang/dutch.php");
  4. }
  5. If($_COOKIE['taal']=="en"){
  6. include("lang/english.php");
  7. }
  8. else
  9. {
  10. include("lang/dutch.php");
  11. }
  12. ?>


Of moet ik in plaats van include, require gebruiken?
En hoe roep ik de Engelse pagina dan aan?
Offline SickBoy - 25/09/2004 16:41
Avatar van SickBoy MySQL beginner misschien met templates
hoe ga je tewerk met links?
een nieuwe pagina of index.php?p=pagina ??
Offline Thomas - 25/09/2004 16:47
Avatar van Thomas Moderator @Roosje: Ik geef in mijn reply aan hoe je jouw code (met gebruikmaking van je URL om de taal te bepalen) aan zou moeten passen (het komt er op neer dat je $_GET['taal'] moet gebruiken in plaats van $taal).

Als je met cookies wilt werken moet je het weer anders aanpakken.
Offline Roosje - 25/09/2004 20:38 (laatste wijziging 25/09/2004 20:39)
Avatar van Roosje Nieuw lid Bedankt! Het werkt!
Nu zit ik nog met een laatste vraagje. Ik werk met een pagina met frames. Als ik dus index.php?taal=en aanroep, verandert de rest van de pagina dus niet, omdat de code enkel werkt voor pagina's waarachter taal=en staat. Hoe kan ik op een simpele manier ervoor zorgen dat de rest van de pagina's ook automatisch van taal veranderd?
Offline Thomas - 25/09/2004 20:57
Avatar van Thomas Moderator Je zou van je frameset ook een PHP file kunnen maken, die aangeroepen word op het moment dat je van taal verandert, en op deze manier de onderliggende frames aan deze nieuwe taal aanpast.
Offline BigBug - 25/09/2004 20:57
Avatar van BigBug PHP expert Geen frame's gebruiken 
Offline Roosje - 25/09/2004 21:34
Avatar van Roosje Nieuw lid Mijn framesets zijn php bestanden, deze veranderen alleen niet automatisch mee. En ja, deze bestanden bevatten ook dezelfde code.
Ik heb ook al wat codes geprobeerd, maar zonder resultaat.

Offline Thomas - 25/09/2004 21:42 (laatste wijziging 25/09/2004 21:45)
Avatar van Thomas Moderator Als je talen-keuze in een selectbox op een van de pagina's in een frame zit, kun je de frameset verversen met behulp van javascript:

  1. top.window.location = "index.php";


Als je dan ook nog eens een speciale var meegeeft, die de geselecteerde taal bevat:

  1. top.window.location = "index.php?taal="+document.forms['taal_formulier_naam'].elements['taal_selectbox_naam'].value;


En je in je frameset zoiets (bij alle taal-specifieke frames) doet als:

  1. <frame src="menu.php<?= (isset($_GET['taal']) ? "?taal=".$_GET['taal'] : "")?>">


Kun je onderliggende frames ook voorzien van de nieuw geselecteerde taal.

Je ververst de hele pagina dus op het moment dat je een andere taal kiest, door de frameset-pagina opnieuw te laden. Deze frameset-pagina voorzie je van een URL-variabele die de taal bevat die je in onderliggende frames wilt gebruiken.
Offline Roosje - 25/09/2004 22:26 (laatste wijziging 13/01/2005 19:01)
Avatar van Roosje Nieuw lid Bedankt! Je bent helemaal geweldig! 

Admin edit:
Dubbelposten mag niet, daarvoor heb je een edit knop!

Als ik veel tekst in zo'n language-bestand plaats, duurt het laden van de pagina dan langer of maakt dit niets uit?
Gesponsorde links
Dit onderwerp is gesloten.
Actieve forumberichten
© 2002-2024 Sitemasters.be - Regels - Laadtijd: 0.231s