Here is one way to do it, if you use objects it doesn't have to be exactly this, there are quite a few similar OOP mplementations, google for it
// in some config file setup your language
define( 'SITE_LANGUAGE', 'Japanese' ) ;
// Your language manager
class LanguageManager
{
static $lang = null ;
public static function getLang()
{
if( !self::$lang )
{
switch( SITE_LANGUAGE )
{
case 'japanese':
require_once( 'JapaneseLanguage.php' ) ;
self::$lang = new JapaneseLanguage() ;
case 'spanish':
require_once( 'SpanishLanguage.php' ) ;
self::$lang = new SpanishLanguage() ;
}
}
retrn self::$lang() ;
}
}
// The following might be overkill, you could also just have getLang() return an
//array, or have the class concrete language class be
// composed of constants instead
// We use an interface to make sure all languages have all
// the required functionality
interface Language
{
public function greeting() ;
public function goodbye() ;
public function insult() ;
}
class JapaneseLanguage implements Language
{
public function greeting()
{
return 'Konichiwa' ;
}
public function goodbye()
{
return 'whatever goodbye is in japanese' ;
}
}
and this is how you would use it
define
function sayHello() {
echo LanguageManager::getLang()->greeting() ;
// or
$lang = LanguageManager::getLang() ;
echo $lang->greeting() ;
}
If you put it in a class
class Thingy
{
protected $lang ;
public function __construct()
{
$this->lang = LanguageManager::getLang() ;
}
public function SayHello()
{
echo $this->lang->greeting() ;
}
}