login  Naam:   Wachtwoord: 
Registreer je!
 Nota's op tutorial:

Tutorials > PHP > Meerdere Talen Systeem
Pagina:

Reacties op de tutorial Meerdere Talen Systeem


Offline  Rens
Gepost op: 26 februari 2007 - 09:45
Gouden medaille

Crew algemeen


  1. <?PHP
  2. # We gaan straks cookies gebruiken, dus ob_start() is vereist!
  3. # De talen array
  4. $aTalen = array ("nederlands", "engels");
  5. ?>

Je zou het ook nog zo kunnen maken dat de talen opgehaald worden uit een map.
Dus dat je zoiets hebt:
+ languages
|-lang_dutch
|-lang_english
|-lang_belgium
Anders moet je het telkens in je array aanpassen.

Offline  Nrzonline
Gepost op: 26 februari 2007 - 11:55
PHP ver gevorderde

Ja dat is zeker een goede optie, maar ik denk dat het wel vrij duidelijk een indicatie geeft hoe een (mogelijke) talensysteem werkt. En als mensen het uiteindelijk snappen hoe het werkt, en ze willen weten welke talen er zijn door middel van het uitlezen van een map, zullen ze misschien beter zelf een readdir () tutorial moeten gaan lezen en proberen toe te passen.

Maar mocht er meer belangstelling zijn tot jouw suggestie, dan zal ik dit zeker erin kunnen verwerken.

Héél erg bedankt voor je nota!

Offline  Voldemort
Gepost op: 27 februari 2007 - 20:16
PHP ver gevorderde

In open-source projecten (bv. KDE) maakt men gebruik van i18n en doet men het zo:

I18N_NOOP("The English Text")

En dan maakt men .po bestanden met de vertaling. Kan je zoiets ook niet in PHP maken en als talenscript gebruiken?

Offline  Nrzonline
Gepost op: 28 februari 2007 - 00:45
PHP ver gevorderde

Hmz, klein scriptje gemaakt... als het goed is moet dit wel werken om de verschillende talen uit te lezen..
Klopt 

  1. <?PHP
  2. $aFiles = array ();
  3. $handle=opendir('languages'); // Wel goede pad instellen
  4. while (false!==($file = readdir($handle)))
  5. {
  6. if(substr($file, 0, 1) == "." || $file == "..") continue;
  7. $sFilesClean = str_replace (".lang.php", "", $file);
  8. $aFiles[] = current (explode (",", $sFilesClean));
  9. }
  10. ?>


@Voldemort, nog nooit van gehoord.. Ik zal hier morgen is wat meer over opzoeken.. Of heb jij misschien een website met meer informatie hierover?

Offline  hittentit
Gepost op: 03 maart 2007 - 00:03
Nieuw lid

prachtig systeem dat je gemaakt hebt, heb het meteen toegepast. Maar kom tot enkele rare constaties. Sommige vertalingen worden namelijk anders getoont op site dan dat ik ze ingegeven heb in de variabelen.

bvb:
$_LANG['Hoofdmenu']['Agenda']='Agenda';

wordt dan weergegeven in mijn menu als: Ngenda

maar waarom is mijn vraag, wat doe ik mis.
ik werk met php versie 5 en de $_LANG variabele komt er wel niet in voort.

nogmaals bedankt voor je tut

Offline  Nrzonline
Gepost op: 03 maart 2007 - 13:36
PHP ver gevorderde

$_LANG staat enkel voor de duidelijkheid, en is geen aparte global variable of wat dan ook. Gewoon een variable als $taal; maar dan wat duidelijker.

Het probleem met het het overschrijven heb ik een keer eerder gehoord. Toen was het probleem ongeveer als volgt:

$_LANG['Hoofdmenu'] = 'Waarde';
$_LANG['Hoofdmenu']['Agenda']= 'Waarde';

Nu krijg je vage overschrijvings verschijnselen als ik het goed heb. Alleen weet ik dit niet zeker, was lang geleden. Zorg dat je $_LANG['Hoofdmenu']['2eBenaming'] maakt, zodat dit probleem (als het goed is) wordt verholpen.

Mocht dit nog niet werken, laat mij dat dan even weten, en zal ik kijken wat het probleem anders kan zijn.

Succes.

Offline  hittentit
Gepost op: 03 maart 2007 - 13:56
Nieuw lid

Het probleem is opgelost, zoals je zei zit het probleem dus in die overschrijving. Ik heb het opgelost door gewoon bvb:
$_LANG['Hoofdmenu']['Start']='Home';
te veranderen in:
$_LANG['HoofdmenuStart']='Home';
en alles werkt nu perfect.

Nogmaals bedankt voor de mooie tut  


Offline  ikke_wel
Gepost op: 06 maart 2007 - 16:11
Nieuw lid

Ik ben net bezig om me te verdiepen in PHP voor een meertalige site, maar ik was tot de conclusie gekomen dat het gebruik van cookies niet een goede keuze was, omdat dan toch een aantal gebruikers worden uitgesloten. Heb ik het dan mis, zo nee, hoe kan je deze site maken, zonder het gebruik van cookies, maw een site die echt geen één bezoeker uitsluit ???

Offline  Nrzonline
Gepost op: 06 maart 2007 - 20:58
PHP ver gevorderde

1: Bezoeker IP zet je in database bij eerste bezoek, inclusief standaard taal (engels). Bij wijziging, update je de taalkeuze van het bijbehoorende IP-adres. Inbellen gaat weg, dus geen ander IP per inbel verbinding, dus dat mag ook geen progleem meer zijn. Per computer moet je dus weer de taal opnieuw instellen, maar dat is met cookies ook zo.

2: Profielen systeem ;)

Offline  ikke_wel
Gepost op: 09 maart 2007 - 16:26
Nieuw lid

Betekent dat voor iedere bezoeker een entry in een database, dat loopt toch aardig op, dan ??

Wat bedoel je met profiel systeem ???

Offline  Nrzonline
Gepost op: 10 maart 2007 - 19:00
PHP ver gevorderde

1. Ja, dat kan aardig oplopen. Vandaar dat ik dus cookies zal gebruiken of een profielen systeem. Aangezien je geen cookies wilt gebruiken, zit er niet veel anders op dan elke bezoeker in het database te gooien.

2. Registreren, en dan pas een keuze kunnen maken in taal. Profielensysteem is gewoon een systeem dat gebruikers zich op een website kunnen registreren, hun profiel kunnen bijwerken.

Offline  ikke_wel
Gepost op: 12 maart 2007 - 16:27
Nieuw lid

Is het volgende ook geen oplossing :
in eerste php :
Citaat:
<?php
$lang = $_SERVER['HTTP_ACCEPT_LANGUAGE'];
if (substr($lang, 0, 2) == 'en')
{
$taal = "UK";;
} else {
$taal = "NL";;
}
?>

Citaat:
<a href="Volgendepagina.php?language=<?php echo $taal; ?>"


en in Volgendepagina.php :

Citaat:
<?php
if(isset($_GET['language']))
{
$taal = $_GET['language'];;
}
else
{
$taal = "NL";;
}
?>

Offline  Nrzonline
Gepost op: 12 maart 2007 - 17:44
PHP ver gevorderde

Kan wel.. try it zou ik zeggen ;)

Offline  destiny_aya
Gepost op: 17 september 2007 - 21:33
Nieuw lid

is het mogelijk om een link te plaatsen voor elke taal ipv de drop menu?

Offline  adam13
Gepost op: 25 januari 2008 - 14:09
Nieuw lid

Hallo,

Mooi script, maar klopt het dat firefox en Safari de teksten uit de taal.php niet laten zien? Ik heb verder Opera IE 6 en 7 en safari geprobeerd en daar werkt het wel prima.

Ik heb wel pogingen gedaan maar het is me niet gelukt, misschien is hier een oplossing voor?


Offline  toesan
Gepost op: 18 februari 2008 - 07:31
Nieuw lid

Een zeer duidelijke tutorial!

Ik vraag me alleen af of Google ook de andere talen indexeert wanneer men gebruik maakt van een cookie...

Weet iemand hier iets meer vanaf?

Alvast bedankt!

Offline  Erwt
Gepost op: 11 juni 2008 - 21:48
PHP beginner

ikke_wel, ik vind dit een zeer mooie oplossing alleen moet je bij ELKE pagina de language via de URL (get) meegeven, waarom geen cookies? Ik denk dat dat systeem van jouw mooi is mbt het gebruiken van cookies. Alleen wordt het wel wat lastig gebruiken want je kunt geen post geven op het klikken op bijv een plaatje.

Offline  roscov27
Gepost op: 21 augustus 2009 - 14:25
Nieuw lid

Hallo, Ik gebruik het script en het werkt goed.

Nu zoek ik alleen een aanpassing voor het formulier om de talen te kiezen.
Eigenlijk wil ik deze als text link laten zien zoals DE | FR . Hoe kan ik dit het beste maken?

  1. <!-- Set languages -->
  2. <div id="menuLang">
  3. <form action="" method="post">
  4. <select name="taalkeuze">
  5. <?PHP
  6. for ($i=0; $i < count ($aTalen); $i++)
  7. { ?>
  8. <option value="<?=$aTalen[$i];?>"><?=$aTalen[$i];?></option>
  9. <?PHP
  10. }
  11. ?>
  12. </select>
  13. <input name="kiezen" type="submit" value="Choose Language" />
  14. </form>
  15. </div>

Offline  roy
Gepost op: 09 maart 2010 - 21:06
PHP gevorderde

Hoi,

Kan ik de bestanden:
nederlands.lang.php
engels.lang.php

Ook met waarden uit de DB vullen?

Offline  edowierenga
Gepost op: 12 september 2010 - 18:54
Nieuw lid

Het script werkt prima. Alleen als ik mijn internetcache e.d. wis dan zijn de plekken, waar de vertaalde tekst zou moeten komen te staan, leeg. Als ik mijn pagina ververs dan wordt alles wel meteen goed weergegeven. Wat kan ik hieraan doen?

Pagina:

Enkel aanvullende informatie is welkom. Geen prijzende of afkeurende reacties.
 
© 2002-2024 Sitemasters.be - Regels - Laadtijd: 0.094s