login  Naam:   Wachtwoord: 
Registreer je!
 Forum

Site vertalen in meerdere talen

Offline roelh - 04/08/2006 09:57
Avatar van roelhPHP gevorderde Heey allemaal,

ik zit met een vraagje waarik niet zo uitkom.
Ik zou graag de site willen vertalen, alleen de standaard tekst, dus niet wat in de DB staat (wat ook moeilijk gaat dan )
Hoe doe ik dit?
Of wat is de beste manier om het te doen?

Groet,

15 antwoorden

Gesponsorde links
Offline Nrzonline - 04/08/2006 09:58
Avatar van Nrzonline PHP ver gevorderde dit heb ik al een keertje voor iemand geschreven op een simpele manier, ik zou het even opzoeken..
Offline roelh - 04/08/2006 10:00
Avatar van roelh PHP gevorderde Ahh thanks, zou supers zijn 
Offline Nrzonline - 04/08/2006 10:02 (laatste wijziging 04/08/2006 10:03)
Avatar van Nrzonline PHP ver gevorderde Ok, ik heb het weer gevonden.. maar het is wel in het engels geschreven (voornaamelijk voor template power)

http://template...hp?p=85#85
Ik denk dat je hier wel aardig makkelijk uit kunt halen hoe ik dat heb gedaan.

(Gewoon ipv $tpl->assign troep: echo $_LANG['naam']['type'] )
Mocht dit niet duidelijk zijn, wil ik hem best wel even duidelijk in normaal PHP scripten zonder TP
Offline roelh - 04/08/2006 10:04
Avatar van roelh PHP gevorderde Hmmss, ik snap zowieso nog niks van TP 
Als je wilt mag die ook wel in gewoon php gescript worden 
Want me hele site is niet in TP namelijk ;)

Wrm benje nie op msn? 
Offline Nrzonline - 04/08/2006 10:13 (laatste wijziging 04/08/2006 10:16)
Avatar van Nrzonline PHP ver gevorderde niet op msn boeit niet zoveel, anders gaan me maten weer whinen of ik morgenaaf mee ga naar lampe (disco) en weinig zin in lol... Hier het voorbeeld zonder TP. (PS. kheb nieuwe msn e-mail, heb je die al? zoniet.. hij staat in mijn profiel van SiMa)

config.php
  1. <?PHP
  2. $iLangId = 1; // 1 voor nederlands, 2 voor engels
  3.  
  4. switch ($iLangId)
  5. {
  6. case 1:
  7. require 'nederlands.lang.php';
  8. break;
  9. case 2:
  10. require 'english.lang.php';
  11. break;
  12. default:
  13. require 'english.lang.php';
  14. break;
  15. }
  16. ?>


nederlands.lang.php
  1. <?PHP
  2. $_LANG['INDEX']['HELLO'] = 'Welkom op mijn webpagina';
  3. $_LANG['INDEX']['WHO'] = 'Wie ben jij?';
  4. ?>


english.lang.php
  1. <?PHP
  2. $_LANG['INDEX']['HELLO'] = 'Welcome on my website';
  3. $_LANG['INDEX']['WHO'] = 'Who are you?';
  4. ?>


index.php
  1. <?PHP
  2. require ('config.php'); // Includen van configuratie (dus mometeel je talen)
  3.  
  4. echo $_LANG['HELLO'] . '<br />';
  5. echo $_LANG['WHO'] . '<br />';
  6. ?>


Als je $iLangId op 1 hebt staan krijg je het volgende te zien op je site
Citaat:
Welkom op mijn webpagina
Wie ben jij?
Als je $iLangId op 2 hebt staan krijg je het volgende te zien op je site
Citaat:
Welcome on my website
Who are you?
Ik hoop dat je hier wat meer aan hebt.
Offline roelh - 04/08/2006 10:16
Avatar van roelh PHP gevorderde Hmmss ga het even proberen toe te passen.
Betekent dus dat ik alle nederlandse tekst, ook lange teksten moet vertalen, en ook voor de Nederlandse aparte pagina moet aanmaken, klopt dat?
Offline Nrzonline - 04/08/2006 10:20 (laatste wijziging 04/08/2006 10:20)
Avatar van Nrzonline PHP ver gevorderde Ja tuurlijk moet je alles vertalen. Per taal een nieuw bestand:

english.lang.php voor engels
nederlands.lang.php voor nederlands
deutch.lang.php voor duits

of je kan alles in het engels houden qua scripting door

english.lang.php voor engels
dutch.lang.php voor nederlands
german.lang.php voor duits

het laatste is wat ik zou doen als ik jouw was. Alles qua scripting (dus ook bestanden) engelse namen geven.

Verder hoef je maar enkel index.php of home.php o.i.d te maken, omdat je variabel enkel uit de geselecteerde bestand wordt gehaald. (dus nederlands bij $iLangId 1, en engels bij $iLangId 2)
Offline roelh - 04/08/2006 10:28
Avatar van roelh PHP gevorderde Heb ik nog 2 vragen erover.
Op index.php heb ik een paginascript staan. Kan ik die switch er gewoon bijzetten dan of...?
En als ik nog een lange tekst heb kan ik dan dit doen:

$_LANG['INDEX']['HELLO'] = 'Welcome on my website';
$_LANG['INDEX']['WHO'] = 'Who are you?';

$_LANG['AUTO']['INFOTEKST'] = 'Domdiedam blaat blaat blaat blaat';
$_LANG['AUTO']['INFOTEKST'] = 'LALALALALLALALALA';

Het moet dan dus onder elkaar komen, snapje?
Omdat het uitleg teksten zijn.
Offline Nrzonline - 04/08/2006 10:38 (laatste wijziging 04/08/2006 10:39)
Avatar van Nrzonline PHP ver gevorderde $_LANG['AUTO']['INFOTEKST'] = 'Domdiedam blaat blaat blaat blaat';
$_LANG['AUTO']['INFOTEKST'] = 'LALALALALLALALALA';

Dit kan niet, aangezien de laatste de variabel overschrijft.
Je moet dan maken:

$_LANG['AUTO']['INFOTEKST'][1] = 'Domdiedam blaat blaat blaat blaat';
$_LANG['AUTO']['INFOTEKST'][2] = 'LALALALALLALALALA';

Of iets in die richting, maar je mag ze niet overschrijven, dus gebruik unieke namen per zin / tekst.

En als het goed is kan je die wel bij je navigatie systeem zetten, maar dat weet ik niet zeker.. test gewoon zou ik zeggen en je merkt het of hij hem goed include/required.
Offline roelh - 04/08/2006 10:52
Avatar van roelh PHP gevorderde Hmmss, sorry dat ik zoveel vraag, maar enigste waar ik totnu toe nog niet uitkom is:

Ik heb dus ff de bestanden gekopierd van jouw om het te proberen.
Nu heb ik op index.php dit:

  1. <?
  2. require ('config.php'); // Includen van configuratie (dus mometeel je talen)
  3.  
  4. echo $_LANG['HELLO'] . '<br />';
  5. echo $_LANG['WHO'] . '<br />';
  6. ?>


Maar ik zie geen tekst staan, als standaard heb ik ff Engels gekozen.

Hoe kan ik nu zorgen dat ik een andere taal aan kan roepen met een link?
En hoe krijg ik tekst zichtbaar?

Sorry dat ik zoveel vraag.

Alvast bedankt he!

Groet,
Offline Nrzonline - 04/08/2006 10:57 (laatste wijziging 04/08/2006 11:12)
Avatar van Nrzonline PHP ver gevorderde Maakt absoluut niet uit dat je veel vraagt.

['INDEX'] moet je wel laaten staan bij als, ookal zit je op index.php ;)
Het is namelijk een aanduiding van locatie, maar hij moet gewoon blijven staan. Of heb je hem ook in de language file verwijderd?
Zoniet, moet je $_LANG['INDEX']['HELLO']; aanhouden 

Met een link lukt niet, ikzelf doe het via mijn database. Leden kunnen een taal (lang_id) kiezen, en via dat controleer ik via de switch methode welke language per welke user moet worden gebruikt. Dus daarvoor een login systeem vereist. Anders een cookie aanmaken... ik zou over het selecteren zo even een voorbeeld geven.

Ok, vervang de oude switch met dit...
  1. <?PHP
  2. if (isset ($_COOKIE['lang_id']))
  3. {
  4. $iLangId = $_COOKIE['lang_id'];
  5. }
  6. else
  7. {
  8. $iLangId = 0;
  9. }
  10.  
  11. switch ($iLangId)
  12. {
  13. case 1:
  14. require 'nederlands.lang.php';
  15. break;
  16. case 2:
  17. require 'english.lang.php';
  18. break;
  19. default:
  20. require 'english.lang.php';
  21. break;
  22. }
  23. ?>


En plaatst het volgende stukje code waar je de (test)buttons wilt hebben:

  1. <?PHP
  2. if (isset ($_POST['dutch']))
  3. {
  4. setcookie ('lang_id', 1, time()+60*60*7*52);
  5. header ('Location: ' . $_SERVER['PHP_SELF']);
  6. }
  7. if (isset ($_POST['english']))
  8. {
  9. setcookie ('lang_id', 2, time()+60*60*7*52);
  10. header ('Location: ' . $_SERVER['PHP_SELF']);
  11. }
  12. ?>
  13. <form action="" method="post">
  14. <input name="dutch" type="submit" value="nederlands" />
  15. <input name="english" type="submit" value="english" />
  16. </form>
Offline roelh - 04/08/2006 11:06
Avatar van roelh PHP gevorderde Thanks dat ene werkt iig, stom van me, had zelf kunnen weten 
Maar dat hoe ik die languages selecteer, snap niet zo.
Is wel makkelijk, zoals je zei, dat als iemand ingelogd altijd dan die language krijgt.

Super bedankt alvast btw!!
Offline Nrzonline - 04/08/2006 11:15 (laatste wijziging 04/08/2006 11:18)
Avatar van Nrzonline PHP ver gevorderde Zie mijn vorige post met cookies, waarbij geen login vereist is. Dit kan je aanpassen en op jouw manier ergens aan je site toevoegen (als je het leuk wilt doen met vlaggetjes bovenin je pagina? ;) )

Citaat:
Is wel makkelijk, zoals je zei, dat als iemand ingelogd altijd dan die language krijgt.
Hierbij ga je wel wat verder, je gebruikt dan je MySQL database, waarbij gebruikers een taal kunnen kiezen bij het registreren en het wijzigen van hun profiel. Hierbij wordt er door php (config o.i.d) de juiste taal gedefineerd, en gebruikt. Ben je niet ingelogged krijg je de 'default', dus over het algemeen engels.

Ook hier kan ik je wel bij verder helpen, ik gebruik het namelijk zelf ook op mijn website (alhoewel nederlands nog niet bestaad in mijn switch, dus nog niet gebruikt kan worden (omdat hij nog niet bestaat )).
Offline Rik - 04/08/2006 12:00
Avatar van Rik Gouden medailleGouden medaille

Crew algemeen
Ik had nog een script liggen voor een taal systeempje, die heb ik gepost, hij moet alleen nog gekeurd worden... ;)
Offline roelh - 04/08/2006 12:37
Avatar van roelh PHP gevorderde Okee thanks, hopelijk word ie snel goedgekeurd 
Gesponsorde links
Dit onderwerp is gesloten.
Actieve forumberichten
© 2002-2024 Sitemasters.be - Regels - Laadtijd: 0.343s