1
1
Fork 0

Add user language in settings, use that field as language for UI

This commit is contained in:
fabrixxm 2015-11-08 14:23:49 +01:00
commit fb3ac68cc0
7 changed files with 80 additions and 47 deletions

View file

@ -11,7 +11,7 @@ require_once("include/dba.php");
*
* Get the language setting directly from system variables, bypassing get_config()
* as database may not yet be configured.
*
*
* If possible, we use the value from the browser.
*
*/
@ -21,22 +21,22 @@ if(! function_exists('get_browser_language')) {
function get_browser_language() {
if (x($_SERVER,'HTTP_ACCEPT_LANGUAGE')) {
// break up string into pieces (languages and q factors)
preg_match_all('/([a-z]{1,8}(-[a-z]{1,8})?)\s*(;\s*q\s*=\s*(1|0\.[0-9]+))?/i',
// break up string into pieces (languages and q factors)
preg_match_all('/([a-z]{1,8}(-[a-z]{1,8})?)\s*(;\s*q\s*=\s*(1|0\.[0-9]+))?/i',
$_SERVER['HTTP_ACCEPT_LANGUAGE'], $lang_parse);
if (count($lang_parse[1])) {
// 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 (count($lang_parse[1])) {
// create a list like "en" => 0.8
$langs = array_combine($lang_parse[1], $lang_parse[4]);
// sort list based on value
arsort($langs, SORT_NUMERIC);
}
// set default to 1 for any without q factor
foreach ($langs as $lang => $val) {
if ($val === '') $langs[$lang] = 1;
}
// sort list based on value
arsort($langs, SORT_NUMERIC);
}
}
if(isset($langs) && count($langs)) {
@ -94,7 +94,7 @@ if(! function_exists('load_translation_table')) {
* load string translation table for alternate language
*
* first plugin strings are loaded, then globals
*
*
* @param string $lang language code to load
*/
function load_translation_table($lang) {
@ -111,7 +111,7 @@ function load_translation_table($lang) {
}
}
}
if(file_exists("view/$lang/strings.php")) {
include("view/$lang/strings.php");
}
@ -145,7 +145,7 @@ function tt($singular, $plural, $count){
$k = $f($count);
return is_array($t)?$t[$k]:$t;
}
if ($count!=1){
return $plural;
} else {
@ -153,11 +153,34 @@ function tt($singular, $plural, $count){
}
}}
// provide a fallback which will not collide with
// a function defined in any language file
// provide a fallback which will not collide with
// a function defined in any language file
if(! function_exists('string_plural_select_default')) {
function string_plural_select_default($n) {
return ($n != 1);
}}
/**
* Return installed languages as associative array
* [
* lang => lang,
* ...
* ]
*/
function get_avaiable_languages() {
$lang_choices = array();
$langs = glob('view/*/strings.php'); /**/
if(is_array($langs) && count($langs)) {
if(! in_array('view/en/strings.php',$langs))
$langs[] = 'view/en/';
asort($langs);
foreach($langs as $l) {
$t = explode("/",$l);
$lang_choices[$t[1]] = $t[1];
}
}
return $lang_choices;
}