Setting locale in ApiControllerBase

This commit is contained in:
Alexander Shursha 2017-04-10 09:48:49 +03:00
parent a60db3cede
commit 6573e70ae3
3 changed files with 32 additions and 22 deletions

View File

@ -91,6 +91,7 @@ class ApiControllerBase extends ControllerRoot
{
// disable view processing
set_error_handler(array($this, 'APIErrorHandler'));
self::setLocale();
}
/**

View File

@ -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).

View File

@ -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