let me write the complete code that I am using an not a simpler version:
I have four files:
English.inc.php is the following:
<?php
// translations to English
$translate = Array();
$translate['hello'] = 'hello';
$translate['good'] = 'good';
?>
Similaryly I have French.inc.php:
<?php
// translations to French
$translate = Array();
$translate['hello'] = 'bonjour';
$translate['good'] = 'bon';
?>
LanguageManager.inc.php is the following:
<?php
$languageData = Array();
$languageData['English'] = Array();
$languageData['English']['translationFile'] = "English.inc.php";
$languageData['French'] = Array();
$languageData['French']['translationFile'] = "French.inc.php";
class LanguageManager
{
var $currentLanguage = 'English';
function getLanguageData() {
global $languageData;
return $languageData[$this->currentLanguage];
}
function setLanguage($lang) {
$this->currentLanguage = $lang;
}
}
?>
Lastly, I have the code that uses the LanguageManager. For example in test.php
<?php
include_once("LanguageManager.inc.php");
$languageManager = new LanguageManager();
$languageData = $languageManager->getLanguageData();
$translationFile = $languageData['translationFile'];
include_once($translationFile);
global $translate;
echo $translate['hello'];
?>
Now if in test.php I do this:
<?php
include_once("Obj.inc.php");
$obj = new Obj();
$obj->writeHello();
?>
where Obj is defined in Obj.inc.php:
<?php
include_once("LanguageManager.inc.php");
class Obj {
function writeHello() {
$languageManager = new LanguageManager();
$languageData = $languageManager->getLanguageData();
$translationFile = $languageData['translationFile'];
include_once($translationFile);
global $translate;
echo $translate['hello'];
}
}
?>
the same code crushes saying that 'English' was never defined as an index for the $languageData array