summaryrefslogtreecommitdiffstats
path: root/endpoints/lib/language.php
diff options
context:
space:
mode:
authorIan Moore <ian.moore@fireeye.com>2015-07-30 08:44:45 -0400
committerIan Moore <ian.moore@fireeye.com>2015-07-30 08:44:45 -0400
commit921c8175e61b8bbb8a14ce58c8dd8cd4c6810d6d (patch)
treedaff400b8e6553e2b3f0e86aca442c91393378db /endpoints/lib/language.php
parent83e0bc0d26bd88925053ac3a6cc84edf7236f18e (diff)
downloadphpvirtualbox-921c8175e61b8bbb8a14ce58c8dd8cd4c6810d6d.zip
phpvirtualbox-921c8175e61b8bbb8a14ce58c8dd8cd4c6810d6d.tar.gz
phpvirtualbox-921c8175e61b8bbb8a14ce58c8dd8cd4c6810d6d.tar.bz2
Fix languages.
Diffstat (limited to 'endpoints/lib/language.php')
-rw-r--r--endpoints/lib/language.php56
1 files changed, 29 insertions, 27 deletions
diff --git a/endpoints/lib/language.php b/endpoints/lib/language.php
index a389ca2..4e5b6b4 100644
--- a/endpoints/lib/language.php
+++ b/endpoints/lib/language.php
@@ -16,75 +16,77 @@ global $_vbox_language;
require_once(dirname(__FILE__).'/config.php');
require_once(dirname(__FILE__).'/utils.php');
+define('VBOX_BASE_LANG_DIR', dirname(dirname(dirname(__FILE__))) .'/languages');
+
/**
* Language class. Parses language file and stores translations in an array.
- *
+ *
* @author Ian Moore (imoore76 at yahoo dot com)
* @copyright Copyright (C) 2010-2015 Ian Moore (imoore76 at yahoo dot com)
* @version $Id: language.php 591 2015-04-11 22:40:47Z imoore76 $
* @package phpVirtualBox
- *
+ *
* @global __vbox_language $GLOBALS['_vbox_language'] global __vbox_language instance
* @name $_vbox_language
*/
class __vbox_language {
-
+
/**
* Static language data used for translations
* @var array
*/
static $langdata = null;
-
+
/**
- *
+ *
* Constructor parses language file and stores translations.
*/
function __construct() {
-
+
# Already initialized?
if(is_array(self::$langdata)) return;
-
+
self::$langdata = array();
-
+
$settings = new phpVBoxConfigClass();
$lang = strtolower($settings->language);
-
+
if(@$_COOKIE['vboxLanguage']) {
$lang = str_replace(array('/','\\','.'),'',$_COOKIE['vboxLanguage']);
}
-
+
// File as specified
- if($lang && file_exists(dirname(dirname(__FILE__)).'/languages/source/'.$lang.'.dat')) {
+ if($lang && file_exists(VBOX_BASE_LANG_DIR.'/source/'.$lang.'.dat')) {
@define('VBOXLANG', $lang);
-
+
// No lang file found
} else {
$lang = 'en';
@define('VBOXLANG', $lang);
self::$langdata['contexts'] = array();
- return;
+ return;
}
-
-
- self::$langdata = unserialize(file_get_contents(dirname(dirname(__FILE__)).'/languages/source/'.$lang.'.dat'));
- $xmlObj = simplexml_load_string(file_get_contents(dirname(dirname(__FILE__)).'/languages/'.$lang.'.xml'));
+
+ self::$langdata = unserialize(file_get_contents(VBOX_BASE_LANG_DIR.'/source/'.$lang.'.dat'));
+
+ $xmlObj = simplexml_load_string(file_get_contents(VBOX_BASE_LANG_DIR.'/'.$lang.'.xml'));
$arrXml = $this->objectsIntoArray($xmlObj);
-
+
$lang = array();
if(!@$arrXml['context'][0]) $arrXml['context'] = array($arrXml['context']);
foreach($arrXml['context'] as $c) {
if(!is_array($c) || !@$c['name']) continue;
if(!@$c['message'][0]) $c['message'] = array($c['message']);
-
+
$lang['contexts'][$c['name']] = array();
$lang['contexts'][$c['name']]['messages'] = array();
foreach($c['message'] as $m) {
if(!is_array($m)) continue;
-
+
$s = $m['source'];
unset($m['source']);
$lang['contexts'][$c['name']]['messages'][$s] = $m;
@@ -92,7 +94,7 @@ class __vbox_language {
}
self::$langdata = array_merge_recursive(self::$langdata, $lang);
}
-
+
/**
* Translate text.
* @param string $item message to translate
@@ -102,23 +104,23 @@ class __vbox_language {
$t = @self::$langdata['contexts'][$context]['messages'][$item]['translation'];
return ($t ? $t : $item);
}
-
+
/**
- *
+ *
* Converts objects into array. Called from class constructor.
* @param array|object $arrObjData object or array to convert to array
* @param array $arrSkipIndices array of indices to skip
- * @return array
+ * @return array
*/
function objectsIntoArray($arrObjData, $arrSkipIndices = array())
{
$arrData = array();
-
+
// if input is object, convert into array
if (is_object($arrObjData)) {
$arrObjData = get_object_vars($arrObjData);
}
-
+
if (is_array($arrObjData)) {
foreach ($arrObjData as $index => $value) {
if (is_object($value) || is_array($value)) {
@@ -132,7 +134,7 @@ class __vbox_language {
}
return $arrData;
}
-
+
}
/**