Skip to content

Instantly share code, notes, and snippets.

@Langmans
Created February 17, 2015 09:58
Show Gist options
  • Save Langmans/9bb259e588f976a4aff2 to your computer and use it in GitHub Desktop.
Save Langmans/9bb259e588f976a4aff2 to your computer and use it in GitHub Desktop.
detect language with Willdurand\Negotiation and slim framework
<?php
use Negotiation\LanguageNegotiator;
// example array
$languages = array(
1=>array('name'=>'english', 'lang_id'=>'en'),
2=>array('name'=>'dutch', 'lang_id'=>'nl')
);
$langid2language['en'] = $languages[1];
$langid2language['nl'] = $languages[2];
if (!isset($_SESSION['cms_language_id'])) {
$lang_negotiator = new LanguageNegotiator();
$lang_header = $app->request()->headers('ACCEPT_LANGUAGE');
/** @var Negotiation\AcceptHeader $accept_header */
$accept_header = $lang_negotiator->getBest($lang_header, array_keys($langid2language));
if ($accept_header) {
$lang = $langid2language[$accept_header->getValue()];
} else {
// it couldn't be parsed or no header found...
$lang = current($languages);
}
$_SESSION['cms_language_id'] = $lang['id'];
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment