diff options
-rw-r--r-- | etc/inc/pfsense-utils.inc | 15 | ||||
-rwxr-xr-x | usr/local/www/guiconfig.inc | 9 | ||||
-rwxr-xr-x | usr/local/www/system.php | 24 |
3 files changed, 48 insertions, 0 deletions
diff --git a/etc/inc/pfsense-utils.inc b/etc/inc/pfsense-utils.inc index b0a93a2..a65db13 100644 --- a/etc/inc/pfsense-utils.inc +++ b/etc/inc/pfsense-utils.inc @@ -2291,4 +2291,19 @@ function pfSense_handle_custom_code($src_dir) { } } +function set_language($lang = 'en_US', $encoding = "ISO8859-1") { + putenv("LANG={$lang}.{$encoding}"); + setlocale(LC_ALL, "{$lang}.{$encoding}"); + textdomain("pfSense"); + bindtextdomain("pfSense","/usr/share/locale"); + bind_textdomain_codeset("pfSense","{$lang}.{$encoding}"); +} + +function get_locale_list() { + $locales = array( + "en_US" => gettext("English"), + ); + asort($locales); + return $locales; +} ?> diff --git a/usr/local/www/guiconfig.inc b/usr/local/www/guiconfig.inc index 684d531..cbdcb9a 100755 --- a/usr/local/www/guiconfig.inc +++ b/usr/local/www/guiconfig.inc @@ -78,6 +78,15 @@ foreach($apple_ua as $useragent) if(strstr($_SERVER['HTTP_USER_AGENT'], $useragent)) $g['theme'] = "pfsense"; +/* Set the default interface language */ +if($config['system']['language'] <> "") { + $g['language'] = $config['system']['language']; +} elseif ($g['language'] == "") { + $g['language'] = 'en_US'; +} + +set_language($g['language']); + /* used by progress bar */ $lastseen = "-1"; diff --git a/usr/local/www/system.php b/usr/local/www/system.php index 6248ada..914f182 100755 --- a/usr/local/www/system.php +++ b/usr/local/www/system.php @@ -61,6 +61,7 @@ $pconfig['timezone'] = $config['system']['timezone']; $pconfig['timeupdateinterval'] = $config['system']['time-update-interval']; $pconfig['timeservers'] = $config['system']['timeservers']; $pconfig['theme'] = $config['system']['theme']; +$pconfig['language'] = $config['system']['language']; $pconfig['dnslocalhost'] = isset($config['system']['dnslocalhost']); @@ -170,6 +171,11 @@ if ($_POST) { update_if_changed("NTP servers", $config['system']['timeservers'], strtolower($_POST['timeservers'])); update_if_changed("NTP update interval", $config['system']['time-update-interval'], $_POST['timeupdateinterval']); + if($_POST['language'] && $_POST['language'] != $config['system']['language']) { + $config['system']['language'] = $_POST['language']; + set_language($config['system']['language']); + } + /* pfSense themes */ if (! $g['disablethemeselection']) { update_if_changed("System Theme", $config['theme'], $_POST['theme']); @@ -404,6 +410,24 @@ include("head.inc"); </td> </tr> <tr> + <td width="22%" valign="top" class="vncell"><?php echo gettext("Language");?></td> + <td width="78%" class="vtable"> + <select name="language"> + <?php + foreach(get_locale_list() as $lcode => $ldesc) { + $selected = ' selected'; + if($lcode != $pconfig['language']) + $selected = ''; + echo "<option value=\"{$lcode}\"{$selected}>{$ldesc}</option>"; + } + ?> + </select> + <strong> + <?=gettext("Choose a language for the webConfigurator"); ?> + </strong> + </td> + </tr> + <tr> <td colspan="2" class="list" height="12"> </td> </tr> <?php if (! $g['disablethemeselection']): ?> |