diff --git a/install/froxlor.sql b/install/froxlor.sql index 2a8df7f1..afac1f80 100644 --- a/install/froxlor.sql +++ b/install/froxlor.sql @@ -797,9 +797,10 @@ CREATE TABLE `panel_diskspace_admins` ( DROP TABLE IF EXISTS `panel_languages`; CREATE TABLE `panel_languages` ( - `id` int(11) unsigned NOT NULL auto_increment, - `language` varchar(30) NOT NULL default '', - `file` varchar(255) NOT NULL default '', + `id` int(11) unsigned NOT NULL AUTO_INCREMENT, + `language` varchar(30) NOT NULL DEFAULT '', + `iso` char(3) NOT NULL DEFAULT 'foo', + `file` varchar(255) NOT NULL DEFAULT '', PRIMARY KEY (`id`) ) ENGINE=MyISAM ; @@ -807,23 +808,24 @@ CREATE TABLE `panel_languages` ( # Dumping data for table `panel_languages` # -INSERT INTO `panel_languages` VALUES (1, 'Deutsch', 'lng/german.lng.php'); -INSERT INTO `panel_languages` VALUES (2, 'English', 'lng/english.lng.php'); -INSERT INTO `panel_languages` VALUES (3, 'Français', 'lng/french.lng.php'); -INSERT INTO `panel_languages` VALUES (4, 'Chinese', 'lng/zh-cn.lng.php'); -INSERT INTO `panel_languages` VALUES (5, 'Catalan', 'lng/catalan.lng.php'); -INSERT INTO `panel_languages` VALUES (6, 'Español', 'lng/spanish.lng.php'); -INSERT INTO `panel_languages` VALUES (7, 'Português', 'lng/portugues.lng.php'); -INSERT INTO `panel_languages` VALUES (8, 'Russian', 'lng/russian.lng.php'); -INSERT INTO `panel_languages` VALUES (9, 'Danish', 'lng/danish.lng.php'); -INSERT INTO `panel_languages` VALUES (10, 'Italian', 'lng/italian.lng.php'); -INSERT INTO `panel_languages` VALUES (11, 'Bulgarian', 'lng/bulgarian.lng.php'); -INSERT INTO `panel_languages` VALUES (12, 'Slovak', 'lng/slovak.lng.php'); -INSERT INTO `panel_languages` VALUES (13, 'Dutch', 'lng/dutch.lng.php'); -INSERT INTO `panel_languages` VALUES (14, 'Hungarian', 'lng/hungarian.lng.php'); -INSERT INTO `panel_languages` VALUES (15, 'Swedish', 'lng/swedish.lng.php'); -INSERT INTO `panel_languages` VALUES (16, 'Czech', 'lng/czech.lng.php'); -INSERT INTO `panel_languages` VALUES (17, 'Polski', 'lng/polish.lng.php'); +INSERT INTO `panel_languages` (`id`, `language`, `iso`, `file`) VALUES + (1, 'Deutsch', 'de', 'lng/german.lng.php'), + (2, 'English', 'en', 'lng/english.lng.php'), + (3, 'Français', 'fr', 'lng/french.lng.php'), + (4, 'Chinese', 'zh', 'lng/zh-cn.lng.php'), + (5, 'Catalan', 'ca', 'lng/catalan.lng.php'), + (6, 'Español', 'es', 'lng/spanish.lng.php'), + (7, 'Português', 'pt', 'lng/portugues.lng.php'), + (8, 'Russian', 'ru', 'lng/russian.lng.php'), + (9, 'Danish', 'da', 'lng/danish.lng.php'), + (10, 'Italian', 'it', 'lng/italian.lng.php'), + (11, 'Bulgarian', 'bg', 'lng/bulgarian.lng.php'), + (12, 'Slovak', 'sk', 'lng/slovak.lng.php'), + (13, 'Dutch', 'nl', 'lng/dutch.lng.php'), + (14, 'Hungarian', 'hu', 'lng/hungarian.lng.php'), + (15, 'Swedish', 'sv', 'lng/swedish.lng.php'), + (16, 'Czech', 'cz', 'lng/czech.lng.php'), + (17, 'Polski', 'pl', 'lng/polish.lng.php'); # -------------------------------------------------------- diff --git a/install/updates/froxlor/0.9/update_0.9.inc.php b/install/updates/froxlor/0.9/update_0.9.inc.php index 0cf4a5c2..ed03caba 100644 --- a/install/updates/froxlor/0.9/update_0.9.inc.php +++ b/install/updates/froxlor/0.9/update_0.9.inc.php @@ -1832,6 +1832,70 @@ if(isFroxlorVersion('0.9.27')) { if ($db->num_rows($handle) < 1) { $db->query("INSERT INTO `panel_settings` (`settinggroup`, `varname`, `value`) VALUES ('phpfpm', 'aliasconfigdir', '/var/www/php-fpm/');"); } + + // Insert ISO-Codes into database. Default value is foo, which is not a valid language code. + $db->query("ALTER TABLE `panel_languages` ADD `iso` CHAR( 3 ) NOT NULL DEFAULT 'foo' AFTER `language`"); + $handle = $db->query("SELECT `language` FROM `panel_languages` WHERE `iso`='foo'"); + + $langauges = $db->fetch_array($handle); + foreach($languages as $language){ + switch ($language) { + case "Deutsch": + $db->query("UPDATE `panel_languages` SET `iso`='de' WHERE `language` = 'Deutsch'"); + break; + case "English": + $db->query("UPDATE `panel_languages` SET `iso`='en' WHERE `language` = 'English'"); + break; + case "Français": + $db->query("UPDATE `panel_languages` SET `iso`='fr' WHERE `language` = 'Français'"); + break; + case "Chinese": + $db->query("UPDATE `panel_languages` SET `iso`='zh' WHERE `language` = 'Chinese'"); + break; + case "Catalan": + $db->query("UPDATE `panel_languages` SET `iso`='ca' WHERE `language` = 'Catalan'"); + break; + case "Español": + $db->query("UPDATE `panel_languages` SET `iso`='es' WHERE `language` = 'Español'"); + break; + case "Português": + $db->query("UPDATE `panel_languages` SET `iso`='pt' WHERE `language` = 'Português'"); + break; + case "Danish": + $db->query("UPDATE `panel_languages` SET `iso`='da' WHERE `language` = 'Danish'"); + break; + case "Italian": + $db->query("UPDATE `panel_languages` SET `iso`='it' WHERE `language` = 'Italian'"); + break; + case "Bulgarian": + $db->query("UPDATE `panel_languages` SET `iso`='bg' WHERE `language` = 'Bulgarian'"); + break; + case "Slovak": + $db->query("UPDATE `panel_languages` SET `iso`='sk' WHERE `language` = 'Slovak'"); + break; + case "Dutch": + $db->query("UPDATE `panel_languages` SET `iso`='nl' WHERE `language` = 'Dutch'"); + break; + case "Russian": + $db->query("UPDATE `panel_languages` SET `iso`='ru' WHERE `language` = 'Russian'"); + break; + case "Hungarian": + $db->query("UPDATE `panel_languages` SET `iso`='hu' WHERE `language` = 'Hungarian'"); + break; + case "Swedish": + $db->query("UPDATE `panel_languages` SET `iso`='sv' WHERE `language` = 'Swedish'"); + break; + case "Czech": + $db->query("UPDATE `panel_languages` SET `iso`='cz' WHERE `language` = 'Czech'"); + break; + case "Polski": + $db->query("UPDATE `panel_languages` SET `iso`='pl' WHERE `language` = 'Polski'"); + break; + default: + showUpdateStep("Sorry, but I don't know the ISO-639 language code for ".$language.". Please update the entry in `panel_languages` manually.\n"); + } + } + updateToVersion('0.9.28-svn1'); } diff --git a/lib/init.php b/lib/init.php index 1ad1f2f2..f71cbd53 100644 --- a/lib/init.php +++ b/lib/init.php @@ -266,6 +266,7 @@ else $langs = array(); $languages = array(); +$iso = array(); // query the whole table $query = 'SELECT * FROM `' . TABLE_PANEL_LANGUAGE . '` '; @@ -275,6 +276,7 @@ $result = $db->query($query); while($row = $db->fetch_array($result)) { $langs[$row['language']][] = $row; + $iso[$row['iso']] = $row['language']; } // buildup $languages for the login screen @@ -291,7 +293,7 @@ if (isset($userinfo['language']) && isset($languages[$userinfo['language']])) else { if(!isset($userinfo['def_language']) - || !isset($languages[$userinfo['def_language']])) + || !isset($languages[$userinfo['def_language']]))// this will always evaluat true, since it is the above statement inverted. @todo remove { if(isset($_GET['language']) && isset($languages[$_GET['language']])) @@ -300,7 +302,22 @@ else } else { - $language = $settings['panel']['standardlanguage']; + $accept_langs = explode(',',$_SERVER['HTTP_ACCEPT_LANGUAGE']); + for($i = 0; $i0) { + $language = $settings['panel']['standardlanguage']; + } } } else @@ -309,6 +326,7 @@ else } } + // include every english language file we can get foreach($langs['English'] as $key => $value) {