Skip to content

Instantly share code, notes, and snippets.

@viki53
Created February 6, 2015 09:31
Show Gist options
  • Save viki53/a9534da5bdebd1c1bffb to your computer and use it in GitHub Desktop.
Save viki53/a9534da5bdebd1c1bffb to your computer and use it in GitHub Desktop.
<?php
$lang = '';
if(!empty($_SERVER['PATH_INFO']) && strlen($_SERVER['PATH_INFO']) >= 3){
$path_info_lang = substr($_SERVER['PATH_INFO'], 1);
if(preg_match('`^([a-z-]+)$`i', $path_info_lang) && is_file($path_info_lang.'.html')){
$lang = $path_info_lang;
}
}
if(empty($lang) && !empty($_SERVER['HTTP_ACCEPT_LANGUAGE'])){
preg_match_all("/([[:alpha:]]{1,8})(-([[:alpha:]|-]{1,8}))?"."(\s*;\s*q\s*=\s*(1\.0{0,3}|0\.\d{0,3}))?\s*(,|$)/i", $_SERVER['HTTP_ACCEPT_LANGUAGE'], $accepted_languages, PREG_SET_ORDER);
foreach($accepted_languages as $l){
if(is_file(strtolower($l[1]).'.html')){
$lang = strtolower($l[1]);
break;
}
}
}
if(empty($lang)){
header('HTTP/1.0 404 Not Found');
$lang = 'fr';
}
include $lang.'.html';
exit;
@nico3333fr
Copy link

I've got a less complicated one 😃

function autoDetectLanguage() {
  $languages = split( ",", strtolower( str_replace( "-" , "_", $_SERVER["HTTP_ACCEPT_LANGUAGE"] ) ) );

  // Cherche toutes les langues du navigateur
  // La première occurrence plausible fait foi..
  foreach( $languages as $key => $language ) {
    if ( strpos( $language, ";" ) ) {
      $language = substr( $language, 0, strpos( $language, ";" ) );
    }

    switch ( substr( $language, 0, 2 ) ) {
      case 'fr' : // fr
        return 'fr';
      case 'en' : // en
        return 'en';
     // etc.
      default:
        return 'fr';
    }
  }


}

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment