Bezoeker doorsturen naar eigen taal: server http accept language

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Guido  -

Guido -

31/01/2013 20:25:58
Quote Anchor link
Hallo,

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)
PHP script in nieuw venster Selecteer het PHP script
1
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');
}

?>



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
 
PHP hulp

PHP hulp

27/11/2024 13:37:16
 
- Ariën  -
Beheerder

- Ariën -

31/01/2013 20:28:33
Quote Anchor link
Als het niet werkt, moet je even debuggen.
M.a.w, wat zegt $_SERVER['HTTP_ACCEPT_LANGUAGE'] als je dat even echo'ed?
 
Ozzie PHP

Ozzie PHP

31/01/2013 20:28:47
Quote Anchor link
Heb je er een exit(); onder staan?

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
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();
?>
 
Guido  -

Guido -

31/01/2013 20:30:01
Quote Anchor link
Hoi Aar,

Ai, ik ben echt een beginner en heb geen flauw idee wat je bedoelt... ;-).

Guido
 
Sam H

Sam H

31/01/2013 20:39:21
Quote Anchor link
Hey Guido.
doe even het volgende:
zet even dit in een documentje:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
<?php
echo $_SERVER['HTTP_ACCEPT_LANGUAGE'];
?>


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:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
nl,en-US;q=0.8,en;q=0.6


Toevoeging op 31/01/2013 20:46:04:

Met andere woorden, dit zal werken:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
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');
}

?>
Gewijzigd op 31/01/2013 20:42:23 door Sam H
 
Guido  -

Guido -

31/01/2013 21:14:55
Quote Anchor link
Bedankt voor jullie reacties.
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
 
Ozzie PHP

Ozzie PHP

31/01/2013 21:58:24
 
Guido  -

Guido -

31/01/2013 23:44:56
Quote Anchor link
Hoi Ozzie,

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 -
 
Tim S

Tim S

01/02/2013 02:17:51
Quote Anchor link
Ik begrijp het niet helemaal, maar waarom voer je deze code niet uit in je config-page?
 
Sam H

Sam H

01/02/2013 09:23:24
Quote Anchor link
Hey Guido.
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
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
<?php
include_once('includes/config.php');
?>


Nu als je wil dat er gezocht wordt naar de correcte taal, zet je gewoon het script dat ik je gaf erin:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
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
}
?>


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
 
Guido  -

Guido -

01/02/2013 10:37:38
Quote Anchor link
Bedankt voor jullie reacties.

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
 



Overzicht Reageren

 
 

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.