另一種解決方案嘗試: -
創建抽象類
interface Language
{
public function getPageTitle();
public function getHeaderTitle();
public function getSiteName();
public function getSlogan();
public function getHeading();
public function getMenuLogin();
public function getMenuSignup();
public function getMenuFindRide();
public function getMenuAddRide();
public function getMenuLogout();
}
雖然界面很小,但實現它可能會產生一個大文件,雖然它可以說比陣列風格更清晰:
class English implements Language
{
public function getHeaderTitle()
{
return 'My website header title';
}
public function getHeading()
{
return 'Heading';
}
// etc...
}
備選: -
或者,你可以結合這些樣式並與getter方法訪問該陣列中的單語,即:
class Language
{
private $languageArray;
private $userLanguage;
public function __construct($language)
{
$this->userLanguage = $language;
$this->languageArray = self::userLanguage();
}
private static function userLanguage()
{
$file = '/path/to/language/config/' . $this->userLanguage . '.ini';
if(!file_exists($file))
{
//Handle Error
}
return parse_ini_file($file);
}
public function getPageTitle()
{
return $this->languageArray['PAGE_TITLE'];
}
public function getHeaderTitle()
{
return $this->languageArray['HEADER_TITLE'];
}
//etc...
}
這將爲雙方的利益。就個人而言,除非您計劃在不久的將來添加更多語言,否則我相信#2解決方案最適合您。
最好有一個帶有字符串標記的語言類文件及其在單獨文件中的轉換。根據所選語言調用文件 – Thamilan
在問號前留有空格是不正確的,我想知道爲什麼有些人已經開始使用它了。你也可以看看http://php.net/manual/en/function.gettext.php這是在國際化域名支持中建立php – rypskar
@rypskar謝謝!你可以更詳細地解釋我 – ben