login  Naam:   Wachtwoord: 
Registreer je!
 Forum

Verschillende talen (Opgelost)

Offline Mmore - 17/07/2007 20:00
Avatar van MmoreMySQL interesse Hoe kan ik het best verschillende talen op een website (bijv. NL, Engels en Duits) uitwerken?

Ik wil dat gebruikers die daartoe aangewezen worden ook het recht krijgen om ze te kunnen wijzigen, dus dat sluit hardcode al uit.

Ik zat te denken aan een systeem waarbij in de DB een uniek ID, de taal, de vertaling en het nummer van de vertaling (bijv 1 = hoi) te gebruiken maar dan moet ik dus per woord / zin een query uitvoeren.. Niet echt effectief.

Heeft iemand wat dit betreft misschien wat tips?

16 antwoorden

Gesponsorde links
Offline Stefan14 - 17/07/2007 20:05
Avatar van Stefan14 PHP gevorderde meestal wordt dit op 2 manieren gedaan:

1 - alle teksten staan in de db en afhankelijk van de geselecteerde taal wordt de juiste tekst opgehaald.

2 - de website wordt in meerdere versies gemaakt, en voor iedere taal wordt een aparte map of subdomein aangemaakt zodat je bijv. zoiets krijgt
http://nl.domein.nl/pagina
http://www.domein.nl/nl/pagina
Offline Mmore - 17/07/2007 20:14
Avatar van Mmore MySQL interesse Ik ga in dit geval voor de eerste manier, omdat dit voor mij meer mogelijkheden geeft. Hoe kan ik dit het beste uitwerken?
Offline vinTage - 17/07/2007 20:17
Avatar van vinTage Nieuw lid http://www.site...re_talen/1
Offline Mmore - 17/07/2007 20:33
Avatar van Mmore MySQL interesse vinTage, in de manier die je daar gebruikt kom je dus ook uit op 1 query per zin/bericht/woord.. Kan dit niet makkelijker?

Bijv pagina = profile.php, $1 = hoi in t nederlands maar $1 is in t engels Hi..

Wat ik op het moment al uitgebouwt heb is standaart engels, zelf kan je omzetten naar elke andere taal en vervolgens wordt per zinnetje uit de db gevist wat nodig is.. Met dus telkens een query voor één zinnetje  
Offline Grayen - 17/07/2007 20:38
Avatar van Grayen PHP ver gevorderde Ik ga het met arrays aanpakken, aangezien het bij mijn om mijn systeem gaat en niet een site en dus maar ongeveer om 50 regeltjes gaat. Dus zoiets:

  1. // Ergens een constante defineren, genaamd LANGUAGE.
  2.  
  3. $aMessage = array
  4. (
  5. 'nl' => 'Dit is een bericht.',
  6. 'en' => 'This is a message.'
  7. );
  8.  
  9. echo $aMessage[LANGUAGE];
Offline vinTage - 17/07/2007 20:39 (laatste wijziging 17/07/2007 20:41)
Avatar van vinTage Nieuw lid Wat ik daar doe, is een db met 2 kolommen in de database, met in elke kolom exact dezelfde id's en inhoud, behalve natuurlijk dat de ene inhoud ENG is en de andere NL.
Daarna word er inderdaad een query per bericht gedaan, maar ik zou niet weten hoe je dat anders zou willen doen.

edit: oh zinnetjes, mjah dan is de optie van Grayen al voldoende en heb je daar geen db voor nodig 
Offline smoos - 17/07/2007 20:39
Avatar van smoos PHP gevorderde http://www.site...en_Systeem
Offline Mmore - 17/07/2007 20:40 (laatste wijziging 17/07/2007 20:40)
Avatar van Mmore MySQL interesse http://www.scriptease.be/snippets-15.html

ik vond dat stukje met behulp van Google, is er ook een manier om dit met de database te combineren zodat gebruikers zonder dat ze het bestand zelf krijgen kunnen wijzigen

@smoos: Even doorlezen 
Offline TotempaaltJ - 17/07/2007 20:42 (laatste wijziging 17/07/2007 20:45)
Avatar van TotempaaltJ PHP interesse Hmm... Duurt een beetje lang, niet?

Ik zou maniertje 2 van Stefan gebruiken, werkt stukken beter!

Of nee, want je wilt dat mensen het kunnen aanpassen? Aaah!
Oke, let op:

Elke tekst op de pagina wordt in de DB gezet!!! Je hebt bovenaan je pagina dan iets staan van:
  1. If($_GET['la'] == 'eng') {
  2. $q = "select * from engels where pagina='" . $page . "'";
  3. }

Citaat:
Edit: (Offtopic) Oei! If is onleesbaar!  
Citaat:

Edit 2: Oeps, beetje laat!
Offline Stefan14 - 17/07/2007 20:45 (laatste wijziging 17/07/2007 20:46)
Avatar van Stefan14 PHP gevorderde hoe ik het zou doen:

teksten
object (varchar(50))
tekst (text)
taal (enum)
hierin komen alle teksten te staan en in object staat dan een (unieke) naam waaraan je de tekst kunt ophalen.

berichten
object (varchar(50))
tekst (text)
taal (enum)
hierin komen alle korte meldingen en berichten te staan die weergegeven worden.

voorbeeld:

  1. <?php
  2. $query = "SELECT tekst FROM teksten WHERE object = 'index_alinea1' AND taal = 'nederlands'";
  3. $result = mysql_query($query) or die (mysql_error());
  4. $tekst = mysql_result($result,'tekst');
  5.  
  6. echo($tekst);
  7. echo('<br /><br />');
  8.  
  9. if ($_SESSION['logged_in'])
  10. {
  11. $object = 'index_loggedin';
  12. }
  13. else
  14. {
  15. $object = 'index_loggedoud';
  16. }
  17.  
  18. $query = "SELECT tekst FROM berichten WHERE object = "'.$object.'" AND taal = 'nederlands'";
  19. mysql_query($query) or die (mysql_error());
  20. $bericht = mysql_result($result,'tekst');
  21.  
  22. echo($bericht);
  23. ?>


Dit is maar een voorbeeldje die dan de tekst van alinea 1 weergeeft en afhankelijk van of je ingelogd bent of niet een berichtje.


Offline smoos - 17/07/2007 20:46
Avatar van smoos PHP gevorderde Waarom toch de teksten in de database zetten?
Offline Stefan14 - 17/07/2007 20:52 (laatste wijziging 17/07/2007 20:52)
Avatar van Stefan14 PHP gevorderde
smoos schreef:
Waarom toch de teksten in de database zetten?


Wat is er nou makkelijker dan een update query naar de database uitvoeren?

Daarnaast hebben databases volgens mij ook een hogere performance t.o.v. tekstbestanden.
Offline Mmore - 17/07/2007 21:00
Avatar van Mmore MySQL interesse Hmm oké.. Het wordt dus echt gewoon een query per mededeling / stukje.

Wel een beetje lastig, maar het is niet anders dan neem ik maar aan  
Offline Stefan14 - 17/07/2007 21:03
Avatar van Stefan14 PHP gevorderde
Mmore schreef:
Hmm oké.. Het wordt dus echt gewoon een query per mededeling / stukje.

Wel een beetje lastig, maar het is niet anders dan neem ik maar aan  


dat is zoals ik het zou doen, zeg niet dat er geen andere manieren zijn.
Offline vinTage - 17/07/2007 21:03
Avatar van vinTage Nieuw lid Je kan voor de "static" texten toch gewoon doen wat Grayen opperde ?
Offline Mmore - 17/07/2007 21:11 (laatste wijziging 17/07/2007 21:14)
Avatar van Mmore MySQL interesse Wat ik gedaan heb is het volgende:

Ik maak per taal een bestand aan waarin de variablen worden gedefineerd, bijvoorbeeld: language_en, deze worden als volgt bepaald:

  1. //Hier komt dan DB selecteren als het werkt
  2. $hiu = "waa";
  3. define ("_LINE1","$hiu");


Op 't end kan ik voor alle talen een language_*taal* bestandje maken en omdat deze wordt bepaald door de db hoef ik alleen maar hierin nieuwe records toe te voegen..  

Edit: op deze manier hou ik de query's etc in één bestand wat het werk voor mij een stuk overzichtelijker maakt en houd  
Gesponsorde links
Dit onderwerp is gesloten.
Actieve forumberichten
© 2002-2024 Sitemasters.be - Regels - Laadtijd: 0.223s