diff --git a/install/includes/gettext/gettext.php b/install/includes/gettext/gettext.php index 52d9768c5..9e174a528 100755 --- a/install/includes/gettext/gettext.php +++ b/install/includes/gettext/gettext.php @@ -39,12 +39,15 @@ defined('LC_MESSAGES') or define('LC_MESSAGES', 5); require('inc/streams.php'); require('inc/gettext_reader.php'); +require_once('gettext_conf.php'); // Variables -global $text_domains, $default_domain, $LC_CATEGORIES, $EMULATEGETTEXT, $CURRENTLOCALE; +global $text_domains, $default_domain, $default_lang, $available_languages, $gt_conf, $LC_CATEGORIES, $EMULATEGETTEXT, $CURRENTLOCALE; $text_domains = array(); -$default_domain = 'installer'; +$default_domain = $gt_conf['default_domain']; +$default_lang = $gt_conf['default_lang']; +$available_languages = $gt_conf['languages']; $LC_CATEGORIES = array( 'LC_CTYPE', 'LC_NUMERIC', @@ -65,6 +68,36 @@ class domain { // Utility functions +/** + * Get the clients language from the browser + */ + +function _get_client_language() { + global $default_lang; + if (isset($_SERVER['HTTP_ACCEPT_LANGUAGE'])) { + $code = substr($_SERVER['HTTP_ACCEPT_LANGUAGE'], 0, 2); + $lang = find_by('code', $code) ?: $default_lang; + } else { + $code = 'en'; + $lang = find_by('code', $code); + } + return $lang; +} + +/** + * Find the correct language by different parameters + */ + +function find_by($field = 'folder', $match = 'english') { + global $available_languages; + foreach ($available_languages as $lang) { + if (isset($lang[$field]) && $lang[$field] === $match) { + return $lang; + } + } + return NULL; +} + /** * Return a list of locales to try for any POSIX-style locale specification. */ diff --git a/install/includes/gettext/gettext_conf.php b/install/includes/gettext/gettext_conf.php index 04cdc2efd..88e5302bd 100644 --- a/install/includes/gettext/gettext_conf.php +++ b/install/includes/gettext/gettext_conf.php @@ -10,11 +10,13 @@ -$gt_conf['gt_install_domain'] = 'installer'; +$gt_conf['default_domain'] = 'installer'; -$gt_conf['gt_install_cookie'] = 'installer_language'; +$gt_conf['default_lang'] = 'english'; -$gt_conf['gt_install_languages'] = array( +$gt_conf['lang_cookie'] = 'install_lang'; + +$gt_conf['languages'] = array( 'bulgarian' => array( 'name' => 'Български', diff --git a/install/index.php b/install/index.php index 893ce458e..e42183366 100644 --- a/install/index.php +++ b/install/index.php @@ -25,14 +25,8 @@ if (file_exists('config_unattended.php')) { require_once('includes/gettext/gettext.php'); require_once('includes/gettext/gettext_conf.php'); - - -// define('LOCALE_DIR', 'includes/gettext/locale'); -define('DEFAULT_LOCALE', 'de_DE'); - -$language = (isset($_GET['lang'])) ? $_GET['lang'] : DEFAULT_LOCALE; - -T_setlocale(LC_MESSAGES, $language); +$language = _get_client_language(); +T_setlocale(LC_MESSAGES, $language['gettext']); // ######################################################### // PRECONFIGURATION @@ -181,7 +175,7 @@ global $wavelog_url; ?> - + @@ -1498,4 +1492,25 @@ global $wavelog_url; + +
+ + + + + + + + + + + + + + + +
+ \ No newline at end of file