summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--etc/inc/pfsense-utils.inc15
-rwxr-xr-xusr/local/www/guiconfig.inc9
-rwxr-xr-xusr/local/www/system.php24
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">&nbsp;</td>
</tr>
<?php if (! $g['disablethemeselection']): ?>
OpenPOWER on IntegriCloud