Talen keuze dmv sessie en get

Door Iltar van der berg, 20 jaar geleden, 5.628x bekeken

(het voorbeeld is een iets ander script, dat komt omdat ik dit onderstaande script ietsje heb aangepast voor gebruiks vriendelijkheid)

Ik heb dit scriptje zelf ook gebruikt naar mate ik het handiger vond om meerdere talen bezoekers te trekken. (hoeft niet meer, maar toch is het handig).

dit scriptje is dan voor beginners, maar altijd handig.

Dit script slaat de taal van de get op in de sessie mits hij in de array $taal_oke staat, dus dat scheelt vreselijk veel gets in links.

Hoe werkt het om dit script heen?

maak een folder genaamd talen
zet daarin de php bestanden genaamd taal_en.php en taal_nl.php (deze worden dan ge-include)

talen_en.php

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
<?php
// makkelijkst opbouwen met $paginanaam['locatie']['titel']

$home['header']['titel'] = 'Welcome to my website !';
$home['body']['content'] = 'This is a multi language page !';

?>


talen_nl.php
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
<?php
// makkelijkst opbouwen met $paginanaam['locatie']['titel']

$home['header']['titel'] = 'Welkom op mijn website !';
$home['body']['content'] = 'Dit is een multi-talen pagina !';

?>


dit kan met natuurlijk meerdere pagina's

zo word het opgeroepen op home.php

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
<?php
// begin header layout
echo $home['header']['title'];
// einde header layout

// begin body layout

echo $home['body']['content'];
// einde body layout
?>


Je kunt deze pagina het makkelijkst opslaan als talen_selector.php
en dan in je pagina's zetten: include_once('talen_selector.php');
(als je een include script gebruikt moet je het op de pagina doen waar je ze op include!!)

De pagina kan opgevraagd worden met pagina.php?taal=en of welke taal je wilt

mocht er iets niet werken hoor ik het graag

Voorbeeld: http://www.infernogm.com/community

Gesponsorde koppelingen

PHP script bestanden

  1. talen-keuze-dmv-sessie-en-get

 

Er zijn 22 reacties op 'Talen keuze dmv sessie en get'

PHP hulp
PHP hulp
0 seconden vanaf nu
 

Gesponsorde koppelingen
Hipska BE
Hipska BE
20 jaar geleden
 
0 +1 -0 -1
prima! dit is een heel mooi script!
- -
- -
20 jaar geleden
 
0 +1 -0 -1
Idd, mooi scriptwerk! Simpel maar doeltreffend.
- -
- -
20 jaar geleden
 
0 +1 -0 -1
Heel mooi!

Alleen is er één miertje die ik ff wil neuken: als ik op pagina y zit en ik zet 'm op een andere taal, kom ik weer op de beginpagina, pagina x.
TJVB tvb
TJVB tvb
20 jaar geleden
 
0 +1 -0 -1
Netjes geschreven en mooi commentaar, alleen heb ik nog een klein punt:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
<?php
if($taal_rdr === true)
{

    $pagina = $_SERVER['PHP_SELF'];
    $taal = $taal_st;
}

else
{
    $pagina = $taal_doc;
    $taal = $taal_st;
}

?>
kan ook als
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
<?php
$taal
= $taal_st;     //Dit gebeurt zowel bij je if als bij je else
if($taal_rdr)     //==true hoef je nooit ergens neer te zetten
{
    $pagina = $_SERVER['PHP_SELF'];
}

else
{
    $pagina = $taal_doc;
}

?>

Het scheelt hier niet zo veel maar als je langere stukken code hebt kan het wel een redelijk verschil maken

@Jonathan, dat komt volgens mij omdat bij de voorbeeld website alles naar index.php gaat. Als je hiervoor meerdere losse pagina's hebt moet het volgens mij wel werken aangezien er gebruikt wordt gemaakt van $pagina = $_SERVER['PHP_SELF'];
Iltar van der berg
iltar van der berg
20 jaar geleden
 
0 +1 -0 -1
@tobias:
dat klopt, voornamelijk als je een include pagina gebruikt (index.php?page=lol.php als voorbeeld), dan moet je hem naar false veranderen, en daaronder de pagina invullen waar je dan heen wilt gaan (index.php?page=taal.php bv)

Ik zal het even veranderen met dat === true ;)
Robert Deiman
Robert Deiman
20 jaar geleden
 
0 +1 -0 -1
@tobias en iltar:

Niet helemaal, als het echt een boolean moet zijn, die de waarde true heeft (boolean -> true/false) dan doet hij het goed in de controle.
Mag $taal_rdr ook een getal zijn, anders dan 0 (geeft ook een true bij if($taal_rdr) ) dan kan je het inderdaad zonder === doen.
PHP Newbie
PHP Newbie
20 jaar geleden
 
0 +1 -0 -1
ongeveer hetzelfde als wat ik ook heb gemaakt
DDragonz
DDragonz
20 jaar geleden
 
0 +1 -0 -1
En bijna het zelfde als de mijne. Ik zal de mijne nog gaan verbeteren met de comments uit de reacties en dus ook met database.
Iltar van der berg
iltar van der berg
20 jaar geleden
 
0 +1 -0 -1
@ n00by, klopt ongeveer wel, alleen is mijne wat meer voor beginners denk ik zo.
PHP Newbie
PHP Newbie
20 jaar geleden
 
0 +1 -0 -1
Iltar, ik heb die van mij toch als newbie gemaakt ;-)
Iltar van der berg
iltar van der berg
20 jaar geleden
 
0 +1 -0 -1
Niveau: Gevorderd staat er bij jouw :\ :P
dus een n00b maakt iets voor een gevorderde? omgekeerde wereld. LOL!

maar ik denk dat die van mij wat overzichtelijker is, vind je niet?
Frank -
Frank -
20 jaar geleden
 
0 +1 -0 -1
Vanwaar die sessie? Een sessie heb je niks aan, die is namelijk niet te bookmarken of eenvoudig door de bezoeker te wijzigen. Zet de taalkeuze gewoon in de url, dan is het is te bookmarken en snel te wijzigen.

Met $_SERVER['HTTP_ACCEPT_LANGUAGE'] kun je de browserinstellingen ophalen, handig om te gokken welke taal de voorkeur heeft van de bezoeker.
Leroy Boerefijn
Leroy Boerefijn
20 jaar geleden
 
0 +1 -0 -1
leuk, alleen als je naar een andere pagina gaat en dan de taal veranderd.. ga je helaas weer naar de beginpagina :S
Rudie dirkx
rudie dirkx
20 jaar geleden
 
0 +1 -0 -1
Zoiets heb ik op http://www.jouwmoeder.nl/forum/ ook. Frank, je wil het juist niet in je URL hebben, want dan zijn twee verschillende urls precies hetzelfde (behalve dus de taal)... Dat lijkt me niet de bedoeling. Ik sla nu een cookie op met de taal er in, dus de voorkeur wordt iets langer opgeslagen dan een standaard php session. Als iemand inlogt wordt de taal van die gebruiker geactiveerd.
Ik zou ook niet de taal uit je SERVER var halen, want accept-language is niet een verplichte header, dus het kan best dat-ie niet bestaat. En daarnaast: mijn browser is engels, maar ik wil een website misschien wel in t nederlands zien. Of andersom.

En
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
<?php
$taal
= $taal_st;     //Dit gebeurt zowel bij je if als bij je else
if($taal_rdr)     //==true hoef je nooit ergens neer te zetten
{
    $pagina = $_SERVER['PHP_SELF'];
}

else
{
    $pagina = $taal_doc;
}

?>
kan ook als
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
<?php

$taal
= $taal_st;     //Dit gebeurt zowel bij je if als bij je else
$pagina = $taal_rdr ? $_SERVER['PHP_SELF'] : $taal_doc;

?>
Frank -
Frank -
20 jaar geleden
 
0 +1 -0 -1
@vercetti: Wat is het probleem met dezelfde url's? www.domein.com/nl/pagina.html is heel wat anders dan www.domein.com/pt/pagina.html. Dat dezelfde techniek wordt gebruikt, is juist handig. Ik gebruik altijd deze volgorde:
1) GET (zie de nl en pt uit mijn voorbeelden, mod-rewrite)
2) cookie (van een vorig bezoek)
3) browser-settings (heb tenslotte geen GET of cookie om de taal in te stellen)
4) default (meestal engels) wanneer er geen bruikbare gegevens zijn

Op deze manier wordt er vrijwel altijd die taal weergegeven die het beste bij de wensen van bezoeker komt. Dat jij een GET met 'en' en een cookie met 'en' en een browser met 'en' hebt, en dan toch 'nl' op je scherm wilt hebben... Lijkt mij sterk!

Dat accept-language niet verplicht is of niet correct is ingesteld, doet niets af aan de opzet. Het is een laatste redmiddel voordat terug wordt gegrepen naar de default-taal. Alle url's op de site zijn voorzien van de taalkeuze en met 1 muisklik pas je de taalkeuze aan. Deze aanpassing wordt ook met een cookie naar de browser gestuurd. Handig voor de volgende keer.

Ik heb sites gemaakt die tot 7 talen (du, en, fr, it, nl, pt, es) ondersteunen en in meer dan 97% van de gevallen wordt er in 1 keer de juiste taal gekozen bij binnenkomst op de site. Slechts 3% van de bezoekers wijzigt na binnenkomst de taalkeuze (1 muisklik). Daar doe ik het voor.
Iltar van der berg
iltar van der berg
20 jaar geleden
 
0 +1 -0 -1
vercetti, kan je dat even uitleggen?

natuurlijk is dit een beginners script, en kan je altijd in een user script mensen die sessie laten veranderen, of in een cookie te zetten.
Ronnie
Ronnie
20 jaar geleden
 
0 +1 -0 -1
Ik heb het script geimplementeerd, maar het blijkt dat een pagina heletijd blijft loopen. Ik snap er niets van.

Ik maak gebruik van de index.com?page=home methode, moet ik dan op de home.php het script includen? Of in de index.php?
TreX
TreX
20 jaar geleden
 
0 +1 -0 -1
ik krijg deze error's kan iemand me zeggen hoe ik die moet oplossen (is dat soms mogelijk met ob_start() en ob_end_flush() ?)
Warning: in_array() [function.in-array]: Wrong datatype for second argument in C:\wamp\www\talen_selector.php on line 48

Warning: Cannot modify header information - headers already sent by (output started at C:\wamp\www\talen_selector.php:48) in C:\wamp\www\talen_selector.php on line 57

Grts TreX
Frank
Frank
20 jaar geleden
 
0 +1 -0 -1
Ik krijg dezelfde fout als TreX. Iemand een idee want aan de vorige reacties te lezen zou hij goed moeten werken. Ik (en vast TreX) ben benieuwd.

Gr Frank
Frank -
Frank -
20 jaar geleden
 
0 +1 -0 -1
Quote:
Warning: in_array() [function.in-array]: Wrong datatype for second argument in C:\wamp\www\talen_selector.php on line 48
Dan is $taal_oke bij jou blijkbaar geen array en dat is wel verplicht. Blijkbaar heb je daarmee lopen kloten, het staat goed in de code.

De melding headers already sent krijg je door de eerste fout, niks bijzonders dus.
Takke
takke
19 jaar geleden
 
0 +1 -0 -1
Ok, er zitten wel degelijk foutjes in, sorry......

Ik ben het nu uitvoerig aan het testen en ik kom net als anderen op de zelfde oneindige lus fout.

De reden hiervan is een paar typ fouten van de opsteller.
$taal = $taal_st(d);// dit stond zonder d in het script.
if(in_array($taal, $taal_ok(e))) stond zonder e in _ok

Hierdoor haal je de oneindige lus eruit.

Voorts werkt de taal selectie niet.
Als ik de taal wil selecteren werkt het script tot $_GET de waarde moet overnemen van selectie vlagje maar doet niet niet.

Ben daar nog niet helemaal uit.

Als ik meer weet laat ik het weten voor de anderen.
Het is wel handig voor mensen die net beginnen. Leren doe je er zeker van.

Bedankt nog ik ga weer verder scripten.

(ALS IK FOUTEN MAAK HOOR IK HET OOK GRAAG)...


Gr.
PHP hulp
PHP hulp
0 seconden vanaf nu
 

Gesponsorde koppelingen
Takke
takke
19 jaar geleden
 
0 +1 -0 -1
Script werkt nu bedankt...

De typ foutjes moet je alleen even op letten..
Je maakt b.v. bij het maken van de folder taal weer talen en ook voor de php pagina's. en vice versa........
Maar even goed nog bedankt voor het script ik heb er erg veel aan....

mvg


Webbeezz

Om te reageren heb je een account nodig en je moet ingelogd zijn.

Inhoudsopgave

  1. talen-keuze-dmv-sessie-en-get

Labels

  • Geen tags toegevoegd.

Navigatie

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.