login  Naam:   Wachtwoord: 
Registreer je!
 Forum

multi-language database of losse bestanden?

Offline lau - 26/04/2006 14:57
Avatar van lauHTML interesse Ik zit met een dilemma.
Is het makkelijker om de constanten in een database te gooien met 2 verschillende talen of de constanten in een lang/nl.php en lang/en.php te gooien?
De site bestaat voor een gedeelte uit dynamische contenten/teksten, deze zullen dan ook in een database staan met 2 verschillende talen. Maar is het handiger om ook de contstanten als 'OK', 'Annuleren', 'Toevoegen' etc... ook in een database op te slaan?

14 antwoorden

Gesponsorde links
Offline kokx - 26/04/2006 14:59 (laatste wijziging 26/04/2006 15:02)
Avatar van kokx Onbekend In 2 bestanden een array maken (lang) en includen.

Edit: Even een voorbeeldje:
lang/nl.php:
  1. <?php
  2. $lang = array();
  3. $lang['OK'] = "OK";
  4. $lang['cancel'] = "Annuleren";
  5. ?>


lang/en.php:
  1. <?php
  2. $lang = array();
  3. $lang['OK'] = "OK";
  4. $lang['cancel'] = "Cancel";
  5. ?>
Offline Thomas - 26/04/2006 16:03
Avatar van Thomas Moderator De aansturing/opbouw/navigatie van je pagina's verandert in feite niet als de voertaal verandert, dus je zou code en layout ook kunnen scheiden m.b.v. een template-engine.
Het enige wat je dan "meerdere keren" zou moeten maken zijn de templates ("content") van de individuele pagina's.
In je code maak je dan ergens een mechanisme (language-cookie?) waarmee je tussen verschillende talen schakelt.
Offline lau - 26/04/2006 16:24
Avatar van lau HTML interesse Hmm.. jah.. het schakelen enzo kan ik wel, maar de vraag is of het handiger is om alle (teksten/afbeeldingen/constanten) toe te voegen in een database, of juist de constanten in een apart php file te doen en de dynamische teksten/afbeeldingen in een database.

offtopic: welk template-engine is het makkelijkst?
Offline marten - 26/04/2006 16:26
Avatar van marten Beheerder @2
zelf vind ik templatepower makkelijk 

Offline Martijn1989 - 26/04/2006 18:37
Avatar van Martijn1989 PHP ver gevorderde 2 Taalbestanden is makkelijker, met uitbreiden.
Offline Maarten - 26/04/2006 19:12 (laatste wijziging 26/04/2006 19:12)
Avatar van Maarten Erelid Bestanden is iets meer aan te raden daar dat dan geen MySQL-connecties vereist. Als je echter constant uitbreidende content hebt waardoor je die bestanden constant zou moeten bijwerken grijp je beter naar een database.

En de makkelijkste template-engine is bij mijn weten ook TemplatePower, aangezien Smarty (grote tegenhanger) alles een beetje door elkaar gooit en het lekker complex maakt 
Offline lau - 26/04/2006 23:55 (laatste wijziging 27/04/2006 01:04)
Avatar van lau HTML interesse Denk ook dat het 2 taalbestanden wordt, aangezien content niet zoveel wordt gewijzigd. En met database zal ik toch zelfde constructie krijgen toch. Ook 1 constante met 2 talenkolommen en dan nog gedoe met queries ook...

Ander vraag: is het beter om dit te gebruiken:
  1. <?php $lang['zooi'] = "zooi";?>

of toch
  1. <?php define("EXTLAN_2", "zooi"); ?>

En wat is het voordeel die je kiest?
Offline Martijn1989 - 27/04/2006 13:44 (laatste wijziging 27/04/2006 13:45)
Avatar van Martijn1989 PHP ver gevorderde Ik doe het zo

  1. <?php
  2. //PM
  3. $pm['subject'] = "Onderwerp";
  4. $pm['message'] = "Bericht";
  5. $pm['submit'] = "Verstuur bericht";
  6. $pm['sent_to'] = "Verzenden aan";
  7. $pm['all_ok'][0] = "Je PB naar ";
  8. $pm['all_ok'][1] = " is verstuurd!";
  9. $pm['error']['msg'] = "Er is iets fout gegaan bij het verzenden van je PB:<br>";
  10. ?>


Waarom : Het is handig, en het werkt?
Offline Thomas - 27/04/2006 13:58
Avatar van Thomas Moderator Ik gebruik hier gewoon aparte templates voor:
templates/nl/... voor nederlandse pagina's
templates/en/... voor engelse pagina's

Als je dan toch bepaalde texten in arrays zet, maak deze dan meteen taal-afhankelijk:

  1. <?php
  2. $vars = array();
  3. $vars['veld_1'] = array("nl" => "testje", "en" => "testing");
  4. $vars['veld_2'] = array("nl" => "hallo", "en" => "hi there");
  5. ?>


Stel dat je ergens hebt bepaald welke taal iemand gebruikt ("nl" of "en"), en je slaat deze taal-keuze op in een variabele, zeg $cfg['lang'], dan kun je op een taal-onafhankelijke wijze een tekst opvragen door middel van:

  1. <?php
  2. echo $vars['veld_1'][$cfg['lang']];
  3. ?>
Offline lau - 27/04/2006 20:12 (laatste wijziging 27/04/2006 23:25)
Avatar van lau HTML interesse @Fangorn, dus je werkt uiteindelijk met maar 1 taalpakket file? Maar is dit niet zelfde principe als met 2 taalbestanden werken. Want het lijkt mij erg onduidelijk als je lange zinnen hebt die in NL en in EN moeten staan... (kan zijn dat ik ernaast zit en iemand een betere oordeel over heeft)...
Offline Frederic - 27/04/2006 23:31
Avatar van Frederic PHP ver gevorderde Als je via FangorN's methode een taal gaat bijvoegen wordt het wel heel onduidelijk (als je al gegevens hebt). Kokx eerst script lijkt me nog het beste en makkelijkste van allemaal!
Offline Gerard - 27/04/2006 23:33
Avatar van Gerard Ouwe rakker De beste methode is die FangorN beschreven heeft.
Offline lau - 28/04/2006 16:26
Avatar van lau HTML interesse @Proximus: ook als je meerdere talen wilt?
Want dan krijg je zoiets:
  1. <?php
  2. $vars = array();
  3. $vars['veld_1'] = array("nl" => "Dit is maar een test", "en" => "This is just a test", "du" => "Dieses ist ein Test gerecht", "fa" => "C'est juste un essai");
  4. ?>

Maar ik moet zeggen dat het bij elkaar zit wel erg makkelijk is om iets te wijzigen, hoef je niet 4 taalbestanden te openen.
Offline Rens - 28/04/2006 18:29
Avatar van Rens Gouden medaille

Crew algemeen
Als je voor zoiets gaat:
  1. <?php
  2. $vars = array();
  3. $vars['veld_1'] = array("nl" => "Dit is maar een test", "en" => "This is just a test", "du" => "Dieses ist ein Test gerecht", "fa" => "C'est juste un essai");
  4. ?>

Kan je het ook zo doen (als je dat duidelijker vind);
  1. <?php
  2. $vars = array();
  3. $vars['veld_1'] = array();
  4. $vars['veld_1']['nl'] = "Dit is maar een test";
  5. $vars['veld_1']['en'] = "This is just a test";
  6. $vars['veld_1']['du'] = "Dieses ist ein Test gerecht";
  7. $vars['veld_1']['fa'] = "C'est juste un essai";
  8. ?>

Is hetzelfde, alleen zet je alles op een aparte regel.
Gesponsorde links
Dit onderwerp is gesloten.
Actieve forumberichten
© 2002-2025 Sitemasters.be - Regels - Laadtijd: 0.291s