}
/// Extract and clean langs from headers
- $langs = strtolower(clean_param($_SERVER['HTTP_ACCEPT_LANGUAGE'], PARAM_CLEAN)); /// Get String with basic clean
+ $langs = strtolower(clean_param($_SERVER['HTTP_ACCEPT_LANGUAGE'], PARAM_SAFEDIR)); /// Get String with basic clean
+ $langs = str_replace('-', '_', $langs); // we are using underscores
$langs = explode(',', $langs); /// Convert to array
- $langs = preg_replace('/([a-z]{2,3}).*/','$1_utf8', $langs); ///Convert to Moodle langs
$langs = array_unique($langs); /// Avoid duplicates
/// Look for such langs under standard locations
foreach ($langs as $lang) {
+ $lang = $lang.'_utf8';
if (file_exists($CFG->dataroot .'/lang/'. $lang) or file_exists($CFG->dirroot .'/lang/'. $lang)) {
$SESSION->lang = $lang; /// Lang exists, set it in session
break; /// We have finished. Go out