From 6573e70ae352358480593e10d8cd1f2d07f1a8ff Mon Sep 17 00:00:00 2001 From: Alexander Shursha Date: Mon, 10 Apr 2017 09:48:49 +0300 Subject: [PATCH 1/2] Setting locale in ApiControllerBase --- .../OPNsense/Base/ApiControllerBase.php | 1 + .../OPNsense/Base/ControllerBase.php | 27 ++++--------------- .../OPNsense/Base/ControllerRoot.php | 26 ++++++++++++++++++ 3 files changed, 32 insertions(+), 22 deletions(-) diff --git a/src/opnsense/mvc/app/controllers/OPNsense/Base/ApiControllerBase.php b/src/opnsense/mvc/app/controllers/OPNsense/Base/ApiControllerBase.php index f5b0d504f..56c7881ba 100644 --- a/src/opnsense/mvc/app/controllers/OPNsense/Base/ApiControllerBase.php +++ b/src/opnsense/mvc/app/controllers/OPNsense/Base/ApiControllerBase.php @@ -91,6 +91,7 @@ class ApiControllerBase extends ControllerRoot { // disable view processing set_error_handler(array($this, 'APIErrorHandler')); + self::setLocale(); } /** diff --git a/src/opnsense/mvc/app/controllers/OPNsense/Base/ControllerBase.php b/src/opnsense/mvc/app/controllers/OPNsense/Base/ControllerBase.php index 832d0073e..a88d7ed06 100644 --- a/src/opnsense/mvc/app/controllers/OPNsense/Base/ControllerBase.php +++ b/src/opnsense/mvc/app/controllers/OPNsense/Base/ControllerBase.php @@ -44,32 +44,15 @@ class ControllerBase extends ControllerRoot * @param OPNsense\Core\Config $cnf config handle * @return ViewTranslator */ - public function getTranslator($cnf) + public function getTranslator() { - $lang = 'en_US'; - - foreach ($cnf->object()->system->children() as $key => $node) { - if ($key == 'language') { - $lang = $node->__toString(); - break; - } - } - - $lang_encoding = $lang . '.UTF-8'; - $textdomain = 'OPNsense'; - $ret = new ViewTranslator(array( 'directory' => '/usr/local/share/locale', - 'defaultDomain' => $textdomain, - 'locale' => $lang_encoding, + 'defaultDomain' => 'OPNsense', + 'locale' => "en_US.UTF-8", )); - /* this isn't being done by Phalcon */ - putenv('LANG=' . $lang_encoding); - textdomain($textdomain); - bindtextdomain($textdomain, '/usr/local/share/locale'); - bind_textdomain_codeset($textdomain, $lang_encoding); - + self::setLocale(); return $ret; } @@ -211,7 +194,7 @@ class ControllerBase extends ControllerRoot $cnf = Config::getInstance(); // set translator - $this->view->setVar('lang', $this->getTranslator($cnf)); + $this->view->setVar('lang', $this->getTranslator()); $this->view->menuSystem = $menu->getItems("/ui".$this->router->getRewriteUri()); // set theme in ui_theme template var, let template handle its defaults (if there is no theme). diff --git a/src/opnsense/mvc/app/controllers/OPNsense/Base/ControllerRoot.php b/src/opnsense/mvc/app/controllers/OPNsense/Base/ControllerRoot.php index 59d2622a7..a128e969b 100644 --- a/src/opnsense/mvc/app/controllers/OPNsense/Base/ControllerRoot.php +++ b/src/opnsense/mvc/app/controllers/OPNsense/Base/ControllerRoot.php @@ -29,6 +29,7 @@ namespace OPNsense\Base; +use OPNsense\Core\Config; use Phalcon\Mvc\Controller; use Phalcon\Logger\Adapter\Syslog; use OPNsense\Core\ACL; @@ -47,6 +48,31 @@ class ControllerRoot extends Controller session_write_close(); } + /** + * Set locale for gettext + */ + public static function setLocale() + { + $lang = 'en_US'; + + // Set locale + foreach (Config::getInstance()->object()->system->children() as $key => $node) { + if ($key == 'language') { + $lang = $node->__toString(); + break; + } + } + + $lang_encoding = $lang . '.UTF-8'; + $textdomain = 'OPNsense'; + + /* this isn't being done by Phalcon */ + putenv('LANG=' . $lang_encoding); + textdomain($textdomain); + bindtextdomain($textdomain, '/usr/local/share/locale'); + bind_textdomain_codeset($textdomain, $lang_encoding); + } + /** * get system logger * @param string $ident syslog identifier From 57e6e8d82909c88b33329fd468f06b58aa7e35e2 Mon Sep 17 00:00:00 2001 From: Alexander Shursha Date: Fri, 21 Apr 2017 08:38:23 +0300 Subject: [PATCH 2/2] Refactoring setLocale() --- .../controllers/OPNsense/Base/ApiControllerBase.php | 2 +- .../controllers/OPNsense/Base/ControllerBase.php | 6 ++++-- .../controllers/OPNsense/Base/ControllerRoot.php | 13 ++++++++++--- 3 files changed, 15 insertions(+), 6 deletions(-) diff --git a/src/opnsense/mvc/app/controllers/OPNsense/Base/ApiControllerBase.php b/src/opnsense/mvc/app/controllers/OPNsense/Base/ApiControllerBase.php index 56c7881ba..27702dd97 100644 --- a/src/opnsense/mvc/app/controllers/OPNsense/Base/ApiControllerBase.php +++ b/src/opnsense/mvc/app/controllers/OPNsense/Base/ApiControllerBase.php @@ -91,7 +91,7 @@ class ApiControllerBase extends ControllerRoot { // disable view processing set_error_handler(array($this, 'APIErrorHandler')); - self::setLocale(); + self::setLocale(self::getLangEncode()); } /** diff --git a/src/opnsense/mvc/app/controllers/OPNsense/Base/ControllerBase.php b/src/opnsense/mvc/app/controllers/OPNsense/Base/ControllerBase.php index a88d7ed06..5dca31322 100644 --- a/src/opnsense/mvc/app/controllers/OPNsense/Base/ControllerBase.php +++ b/src/opnsense/mvc/app/controllers/OPNsense/Base/ControllerBase.php @@ -46,13 +46,15 @@ class ControllerBase extends ControllerRoot */ public function getTranslator() { + $lang_encoding = self::getLangEncode(); + $ret = new ViewTranslator(array( 'directory' => '/usr/local/share/locale', 'defaultDomain' => 'OPNsense', - 'locale' => "en_US.UTF-8", + 'locale' => $lang_encoding, )); - self::setLocale(); + self::setLocale($lang_encoding); return $ret; } diff --git a/src/opnsense/mvc/app/controllers/OPNsense/Base/ControllerRoot.php b/src/opnsense/mvc/app/controllers/OPNsense/Base/ControllerRoot.php index a128e969b..b91400751 100644 --- a/src/opnsense/mvc/app/controllers/OPNsense/Base/ControllerRoot.php +++ b/src/opnsense/mvc/app/controllers/OPNsense/Base/ControllerRoot.php @@ -49,9 +49,9 @@ class ControllerRoot extends Controller } /** - * Set locale for gettext + * Get lang encoding for gettext */ - public static function setLocale() + public static function getLangEncode() { $lang = 'en_US'; @@ -63,7 +63,14 @@ class ControllerRoot extends Controller } } - $lang_encoding = $lang . '.UTF-8'; + return $lang . '.UTF-8'; + } + + /** + * Set locale for gettext + */ + public static function setLocale($lang_encoding) + { $textdomain = 'OPNsense'; /* this isn't being done by Phalcon */