Bezoeker doorsturen naar eigen taal: server http accept language
Ik heb een website met 3 talen.
Graag wil ik bezoekers doorsturen naar hun eigen taal.
Heb een klein scriptje maar ik vraag me af of dit juist is, het werkt in ieder geval (nog) niet:
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
<?php
if ($_SERVER['HTTP_ACCEPT_LANGUAGE'] == 'en_EN')
{
header('Location: http://www.domeinx.nl/?sLang=en');
}
else if ($_SERVER['HTTP_ACCEPT_LANGUAGE'] == 'de_DE')
{
header('Location: http://www.domeinx.nl/?sLang=du');
}
else if ($_SERVER['HTTP_ACCEPT_LANGUAGE'] == 'nl_NL')
{
header('Location: http://www.domeinx.nl/?sLang=nl');
}
else
{
header('Location: http://www.domeinx.nl/?sLang=en');
}
?>
if ($_SERVER['HTTP_ACCEPT_LANGUAGE'] == 'en_EN')
{
header('Location: http://www.domeinx.nl/?sLang=en');
}
else if ($_SERVER['HTTP_ACCEPT_LANGUAGE'] == 'de_DE')
{
header('Location: http://www.domeinx.nl/?sLang=du');
}
else if ($_SERVER['HTTP_ACCEPT_LANGUAGE'] == 'nl_NL')
{
header('Location: http://www.domeinx.nl/?sLang=nl');
}
else
{
header('Location: http://www.domeinx.nl/?sLang=en');
}
?>
URL van bv Engelse indexpagina heeft dus toevoeging '?sLang=en'.
Als script op zich juist is, gaat mijn CMS er blijkbaar niet goed mee om.
Guido
M.a.w, wat zegt $_SERVER['HTTP_ACCEPT_LANGUAGE'] als je dat even echo'ed?
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
<?php
if ($_SERVER['HTTP_ACCEPT_LANGUAGE'] == 'en_EN')
{
header('Location: http://www.domeinx.nl/?sLang=en');
}
else if ($_SERVER['HTTP_ACCEPT_LANGUAGE'] == 'de_DE')
{
header('Location: http://www.domeinx.nl/?sLang=du');
}
else if ($_SERVER['HTTP_ACCEPT_LANGUAGE'] == 'nl_NL')
{
header('Location: http://www.domeinx.nl/?sLang=nl');
}
else
{
header('Location: http://www.domeinx.nl/?sLang=en');
}
exit();
?>
if ($_SERVER['HTTP_ACCEPT_LANGUAGE'] == 'en_EN')
{
header('Location: http://www.domeinx.nl/?sLang=en');
}
else if ($_SERVER['HTTP_ACCEPT_LANGUAGE'] == 'de_DE')
{
header('Location: http://www.domeinx.nl/?sLang=du');
}
else if ($_SERVER['HTTP_ACCEPT_LANGUAGE'] == 'nl_NL')
{
header('Location: http://www.domeinx.nl/?sLang=nl');
}
else
{
header('Location: http://www.domeinx.nl/?sLang=en');
}
exit();
?>
Ai, ik ben echt een beginner en heb geen flauw idee wat je bedoelt... ;-).
Guido
doe even het volgende:
zet even dit in een documentje:
en laat ons weten wat de uitkomst is :)
En hoe verwerk je de verstuurde parameters? Bijvoorbeeld als sLang=en, hoe verander je van taal?
EDIT:
Ik checkte het even, dit is de uitkomst in mijn geval:
Toevoeging op 31/01/2013 20:46:04:
Met andere woorden, dit zal werken:
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
<?php
if (substr($_SERVER['HTTP_ACCEPT_LANGUAGE'], 0, 2) == 'en')
{
header('Location: http://www.domeinx.nl/?sLang=en');
}
else if (substr($_SERVER['HTTP_ACCEPT_LANGUAGE'], 0, 2) == 'de')
{
header('Location: http://www.domeinx.nl/?sLang=du');
}
else if (substr($_SERVER['HTTP_ACCEPT_LANGUAGE'], 0, 2) == 'nl')
{
header('Location: http://www.domeinx.nl/?sLang=nl');
}
else
{
header('Location: http://www.domeinx.nl/?sLang=en');
}
?>
if (substr($_SERVER['HTTP_ACCEPT_LANGUAGE'], 0, 2) == 'en')
{
header('Location: http://www.domeinx.nl/?sLang=en');
}
else if (substr($_SERVER['HTTP_ACCEPT_LANGUAGE'], 0, 2) == 'de')
{
header('Location: http://www.domeinx.nl/?sLang=du');
}
else if (substr($_SERVER['HTTP_ACCEPT_LANGUAGE'], 0, 2) == 'nl')
{
header('Location: http://www.domeinx.nl/?sLang=nl');
}
else
{
header('Location: http://www.domeinx.nl/?sLang=en');
}
?>
Gewijzigd op 31/01/2013 20:42:23 door Sam H
Ik loop tegen de default taalinstelling van mijn cms aan (quickcms), hierdoor krijg ik het niet voor elkaar.
Nu vraag ik me af... is dit ook via een htaccess te doen?
Guido
Dat gaat mij helaas boven de pet ;-).
In mijn config-page bepaalt deze variabele de default taal: $config['default_lang'] = "nl";
Dus als het nu mogelijk zou zijn om die variabele in mijn eerdere script te plakken (of in de gewijzigde versie van Sam):
if ($_SERVER['HTTP_ACCEPT_LANGUAGE'] == 'en_EN')
{
$config['default_lang'] = "nl";
}
else if ($_SERVER['HTTP_ACCEPT_LANGUAGE'] == 'de_DE')
{
$config['default_lang'] = "du";
}
etc
Maar hoe verpak ik een $config in zo'n script of is dat uberhaupt helemaal niet mogelijk?
Guido
Gewijzigd op 31/01/2013 23:47:03 door Guido -
Ik begrijp het niet helemaal, maar waarom voer je deze code niet uit in je config-page?
Wat ze hier proberen te zeggen is: als je een site bouwt, heb je meestal een config.php file die in een map staat als 'includes' (is maar een voorbeeld). In deze pagina zet je dingen die je op elke pagina nodig zal hebben, zoals een verbinding met de database,... en in jou geval de taalkeuze.
Vervolgens zet je op elke pagina waar je wil checken voor taal en verbinding met de database wil en dergelijke gewoon
Nu als je wil dat er gezocht wordt naar de correcte taal, zet je gewoon het script dat ik je gaf erin:
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
<?php
if (substr($_SERVER['HTTP_ACCEPT_LANGUAGE'], 0, 2) == 'en')
{
//Hier verwerk je dan als de taal Engels is
}
else if (substr($_SERVER['HTTP_ACCEPT_LANGUAGE'], 0, 2) == 'de')
{
//Hier verwerk je dan als de taal Duits is
}
else if (substr($_SERVER['HTTP_ACCEPT_LANGUAGE'], 0, 2) == 'nl')
{
//Hier verwerk je dan als de taal Nederlands is
}
else
{
//Hier verwerk je dan als de taal gene van de bovenstaande is
}
?>
if (substr($_SERVER['HTTP_ACCEPT_LANGUAGE'], 0, 2) == 'en')
{
//Hier verwerk je dan als de taal Engels is
}
else if (substr($_SERVER['HTTP_ACCEPT_LANGUAGE'], 0, 2) == 'de')
{
//Hier verwerk je dan als de taal Duits is
}
else if (substr($_SERVER['HTTP_ACCEPT_LANGUAGE'], 0, 2) == 'nl')
{
//Hier verwerk je dan als de taal Nederlands is
}
else
{
//Hier verwerk je dan als de taal gene van de bovenstaande is
}
?>
En dan zal elke keer als iemand je pagina aanroept hij worden doorgestuurd naar de juiste taal.
(Natuurlijk moet je wel nog een afhandeling maken van de GET parameters in de link, dus je moet nog de code schrijven voor effectief van taal te veranderen, maar dat zal je al wel doorhebben.)
Hopelijk verduidelijkt dit wat
Gewijzigd op 01/02/2013 10:22:40 door Sam H
In mijn index.php staat:
require 'database/config/general.php';
require DB_CONFIG_LANG;
Ga ik naar mijn general.php, dan kom ik dit tegen:
$config['default_lang'] = "nl";
Als ik beide lines inzake config lang verwijder, wordt de website niet meer gevonden.
@Sam: jouw script werkt (wordt keurig naar de juiste taal (url) verwezen), maar toch krijg ik melding dat website niet gevonden is. Zal aan de config instelling liggen gok ik.
Guido