Tutorials >
PHP >
Meerdere Talen Systeem
|
Gepost op: 26 februari 2007 - 09:45 |
|
|
|
Crew algemeen
|
<?PHP
# We gaan straks cookies gebruiken, dus ob_start() is vereist!
ob_start ();
# De talen array
$aTalen = array ("nederlands", "engels");
?>
<?PHP # We gaan straks cookies gebruiken, dus ob_start() is vereist! # De talen array $aTalen = array ("nederlands", "engels"); ?>
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. |
|
|
|
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! |
|
|
|
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? |
|
|
|
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
<?PHP
$aFiles = array ();
$handle=opendir('languages'); // Wel goede pad instellen
while (false!==($file = readdir($handle)))
{
if(substr($file, 0, 1) == "." || $file == "..") continue;
$sFilesClean = str_replace (".lang.php", "", $file);
$aFiles[] = current (explode (",", $sFilesClean));
}
?>
<?PHP $handle=opendir('languages'); // Wel goede pad instellen while (false!==($file = readdir($handle))) { if(substr($file, 0, 1) == "." || $file == "..") continue; } ?>
@Voldemort, nog nooit van gehoord.. Ik zal hier morgen is wat meer over opzoeken.. Of heb jij misschien een website met meer informatie hierover? |
|
|
|
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 |
|
|
|
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. |
|
|
|
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
|
|
|
|
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 ??? |
|
|
|
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 ;) |
|
|
|
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 ??? |
|
|
|
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. |
|
|
|
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";;
}
?> |
|
|
|
Gepost op: 12 maart 2007 - 17:44 |
|
|
|
PHP ver gevorderde
|
Kan wel.. try it zou ik zeggen ;) |
|
|
|
Gepost op: 17 september 2007 - 21:33 |
|
|
|
Nieuw lid
|
is het mogelijk om een link te plaatsen voor elke taal ipv de drop menu? |
|
|
|
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?
|
|
|
|
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! |
|
|
|
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. |
|
|
|
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?
<!-- Set languages -->
<div id="menuLang">
<form action="" method="post">
<select name="taalkeuze">
<?PHP
for ($i=0; $i < count ($aTalen); $i++)
{ ?>
<option value="<?=$aTalen[$i];?>"><?=$aTalen[$i];?></option>
<?PHP
}
?>
</select>
<input name="kiezen" type="submit" value="Choose Language" />
</form>
</div>
<!-- Set languages -->
<div id="menuLang">
<form action="" method="post">
<select name="taalkeuze">
<?PHP
for ($i=0; $i < count ($aTalen); $i++)
{ ?>
<option value="<?=$aTalen[$i];?>"><?=$aTalen[$i];?></option>
<?PHP
}
?>
</select>
<input name="kiezen" type="submit" value="Choose Language" />
</form>
</div>
|
|
|
|
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?
|
|
|
|
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? |
|
|
Enkel aanvullende informatie is welkom. Geen prijzende of afkeurende reacties. |
|
|
|