私の正直な意見では、データベース ソリューションは非常に高価であり、実際には必要ありません。おそらくあなたのウェブサイトには、静的な (変化しない) 言語フレーズがあります。この場合、言語配列を使用してそれらを保存し、$array['key'] = 'phrase'
グローバルなものを介してそれらを取得できるようにする必要があります。このようなもの:
class Lang {
private static $loaded;
private static $array;
private static function set($key, $value) {
self::$array[$key] = $value;
}
public static function get($key, $default = 'empty') {
$lang = LANG;
$file = "lang/$lang.php";
if (!in_array($lang, self::$array) and file_exists($file)) {
include($file);
self::$loaded[] = $lang;
}
return (isset(self::$array[$key])
? self::$array[$key]
: $default;
}
}
次に、言語ファイルをlang/en.php
またはとして保存する必要がありますlang/it.php
...これには、次のようなものが含まれます。次に、各要求に対して正しいものにself::set('MY_KEY', 'This is a phrase');
設定するだけです。LANG
定数を使用しましたLANG
が、グローバルなものを保存する方法は他にもあります。
非静的クラスを使用することができ、おそらく推奨されます。そのような:
class Lang {
private $lang;
public function __construct($lang) {
$file = "lang/{$lang}.php";
if (file_exists($file))
include($file);
}
private function set($key, $value) {
$this->lang[$key] = $value;
}
public function get($key, $default = 'empty') {
return (isset($this->lang[$key])
? $this->lang[$key]
: $default;
}
}
ただし、依存性注入を使用して、必要なたびにこのクラスを注入する必要があります。使用例:
$lang = new Lang('en');
$lang->get('LANG_KEY');