new: [i18n] Added tools to switch between languages via the server settings

pull/3368/head
iglocska 2018-06-20 15:11:43 +02:00
parent 1f65f9ef45
commit a930fdeaeb
3 changed files with 35 additions and 0 deletions

View File

@ -114,6 +114,11 @@ class AppController extends Controller {
$this->set('queryVersion', $this->__queryVersion);
$this->loadModel('User');
$auth_user_fields = $this->User->describeAuthFields();
$language = Configure::read('MISP.language');
if (!empty($language) && $language !== 'eng') {
Configure::write('Config.language', $language);
}
//if fresh installation (salt empty) generate a new salt
if (!Configure::read('Security.salt')) {
$this->loadModel('Server');

View File

@ -725,6 +725,10 @@ class ServersController extends AppController {
$this->render('/Elements/healthElements/settings_row');
}
private function __loadAvailableLanguages() {
return $this->Server->loadAvailableLanguages();
}
private function __loadLocalOrgs() {
$this->loadModel('Organisation');
$local_orgs = $this->Organisation->find('list', array(

View File

@ -148,6 +148,16 @@ class Server extends AppModel {
'test' => 'testLive',
'type' => 'boolean',
),
'language' => array(
'level' => 0,
'description' => 'Select the language MISP should use. The default is english.',
'value' => 'eng',
'errorMessage' => '',
'test' => 'testLanguage',
'type' => 'string',
'optionsSource' => 'AvailableLanguages',
'afterHook' => 'cleanCacheFiles'
),
'enable_advanced_correlations' => array(
'level' => 0,
'description' => 'Enable some performance heavy correlations (currently CIDR correlation)',
@ -2387,6 +2397,22 @@ class Server extends AppModel {
return $leafValue;
}
public function loadAvailableLanguages() {
$dirs = glob(APP . 'Locale/*', GLOB_ONLYDIR);
$languages = array('eng' => 'eng');
foreach ($dirs as $k => $dir) {
$dir = str_replace(APP . 'Locale' . DS, '', $dir);
$languages[$dir] = $dir;
}
return $languages;
}
public function testLanguage($value) {
$languages = $this->loadAvailableLanguages();
if (!isset($languages[$value])) return 'Invalid language.';
return true;
}
public function testForNumeric($value) {
if (!is_numeric($value)) return 'This setting has to be a number.';
return true;