Hoe voer ik de accept language header in?

Status
Niet open voor verdere reacties.

Knientje

Gebruiker
Lid geworden
15 jan 2009
Berichten
102
Even voor de duidelijkheid, ik gebruik Wordpress en heb dus te maken met een footer.php en een header.php.
Mijn site is tweetalig (men heeft handmatige keus) via een plugin.
Nu wil ik echter dat de browsertaal van de gebruiker als standaard geladen wordt. En als die anders is dan mijn twee beschikbare talen (Engels en Nederlands), dat Engels prioriteit krijgt.
Nu kom ik dus de "accept language header" tegen. Ik had er nog nooit van gehoord, maar goed.
Ik wil deze dus gebruiken, omdat dat schijnbaar beter is dan de locale op basis van IP. Wat ik ook wel snap. Want als ik naar Kenya zou gaan en er dus op basis van locale Swahili (wat ik niet spreek) voorgeschoteld wordt, heb ik natuurlijk liever dat er naar mijn browsertaal (Nederlands op mijn telefoon) gekeken wordt en ik Engels met prioriteit voorgeschoteld krijg. Of Nederlands

Nu kan ik alleen niet vinden welke tekst ik precies moet invoeren en of daar HTML tags bij moeten.
Ik vermoed dat ik dit ergens in mijn header.php bestand moet zetten maar waar? En wat typ ik letterlijk in?
Vermoedelijk hoort het tussen <head> en </head> en dus nog voor <body>.
Maar ik kan er nergens duidelijke uitleg over vinden.
 
Geen antwoord op je vraag in php, wel in javascript. Een gratis web service kan voor je vraag handig zijn.
Code:
<p>Woonplaats: <span class="city"></span></p>
<p>Regiocode: <span class="region-code"></span></p>
<p>Land: <span class="country-name"></span></p>
<p>Landcode: <span class="country-code"></span></p>
<p>IP adres: <span class="ip"></span></p>
<p>Longitude: <span class="longitude"></span></p>
<p>Latitude: <span class="latitude"></span></p>
<script src="//ajax.googleapis.com/ajax/libs/jquery/2.2.4/jquery.min.js"></script>
<script>
jQuery.ajax({
  url: '//freegeoip.net/json/',
  type: 'POST',
  dataType: 'jsonp',
  success: function(location) {
    jQuery('.city').html(location.city);
    jQuery('.region-code').html(location.region_code);
    jQuery('.ip').html(location.ip);
    jQuery('.longitude').html(location.longitude);
    jQuery('.latitude').html(location.latitude);
    jQuery('.country-name').html(location.country_name);
    jQuery('.country-code').html(location.country_code);
  }
});
/*
voorbeeld: bezoeker uit NL naar nederlands, anders naar engels
  success: function(location) {
    if (location.country_code === 'NL') {
      window.top.location.href = 'http://www.example.nl/index-nl.html';
    }else{
      window.top.location.href = 'http://www.example.nl/index-en.html';
    }
  }
*/
</script>

Suc6. Have fun.
 
@Bron, leuke code maar dat heeft helemaal niks te maken met de vraag :)

@Knientje
Ik heb geen verstand van wordpress (doe alles zelf) dus qua code kan ik niet verder helpen zonder eerst de code te zien waar het om draait. Tevens vond ik het volgende wat voor mij toch wel duidelijk is over de 'accept language header'
 
Hoi, dit heeft zeker wel te maken met de vraag.
Nu wil ik echter dat de browsertaal van de gebruiker als standaard geladen wordt. En als die anders is dan mijn twee beschikbare talen (Engels en Nederlands), dat Engels prioriteit krijgt.
Met jQuery('.country-code') krijg je de iso landcode waarmee je kan vaststellen wat de taal is. Als de landcode FR is dan is dat Frankrijk en dan weet ik dat ze daar Frans als taal hebben.
Omdat de site 2-talig is kun je met if (location.country_code === 'NL') de Nederlandse pagina laten zien en in alle andere gevallen kun je de Engelse pagina laten zien. Dit is de enige betrouwbare manier in Javascript.

De TS wil het hoogstwaarschijnlijk met php oplossen. Dan is de simpelste vorm:
Code:
$lang = substr($_SERVER['HTTP_ACCEPT_LANGUAGE'], 0, 2);
if ($lang === 'nl') {
  header('Location: http://www.example.nl/index-nl.html');
  exit;
}else{
  header('Location: http://www.example.nl/index-en.html');
  exit;
}
 
Status
Niet open voor verdere reacties.
Steun Ons

Nieuwste berichten

Terug
Bovenaan Onderaan