From bb423ff9b4e8471e34f484ec591987305a57aab1 Mon Sep 17 00:00:00 2001 From: Tobias Diekershoff Date: Mon, 3 Oct 2016 21:12:47 +0200 Subject: [PATCH] rework fallback code --- include/pgettext.php | 53 +++++++++++++++++--------------------------- 1 file changed, 20 insertions(+), 33 deletions(-) diff --git a/include/pgettext.php b/include/pgettext.php index ed924fa337..f1eb75752c 100644 --- a/include/pgettext.php +++ b/include/pgettext.php @@ -1,13 +1,7 @@ 2 ) { - if (! in_array(substr($lang_parse[1][$i], 0, 2), $lang_parse[1] ) ) { - array_push($lang_parse[1], substr($lang_parse[1][$i], 0, 2)); - if (floatval($lang_parse[4][$i])>0) - array_push($lang_parse[4], strval(floatval($lang_parse[4][$i])-0.0001)); - else - array_push($lang_parse[4], '0.9999'); + $lang_list[] = strtolower($lang_parse[1][$i]); + if ( strlen($lang_parse[1][$i])>3 ) { + $dashpos = strpos($lang_parse[1][$i], '-'); + if (! in_array(substr($lang_parse[1][$i], 0, $dashpos), $lang_list ) ) { + $lang_list[] = strtolower(substr($lang_parse[1][$i], 0, $dashpos)); } } } - // create a list like "en" => 0.8 - $langs = array_combine($lang_parse[1], $lang_parse[4]); - - // set default to 1 for any without q factor - foreach ($langs as $lang => $val) { - if ($val === '') $langs[$lang] = 1; - if ($val === '0') $langs[$lang] = 1; - } - - // sort list based on value - arsort($langs, SORT_NUMERIC); - print_r($langs); } } - if(isset($langs) && count($langs)) { - foreach ($langs as $lang => $v) { - if(file_exists("view/lang/$lang") && is_dir("view/lang/$lang")) { - $preferred = $lang; - break; - } + // check if we have translations for the preferred languages and pick the 1st that has + for ($i=0; $iconfig['system']['language'])) ? $a->config['system']['language'] : 'en'); }}