私の正直な意見では、データベースのソリューションは非常に高価で、実際には必要ありません。おそらくあなたのウェブサイトには言語フレーズが静的(変更されていない)の言語があります。この場合、言語配列を使用して$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');
私の仕事では常に言語ファイルを使用していました。それらはサーバー上に存在し、フレームワーク経由で簡単にアクセスでき、応答時間は無制限です。あなたのデータベースなどがダウンした場合(maintやそれ以外の場合)、少なくともあなたの言語は常にユーザーが利用できるようになります。これをDBに入れるのは良い考えではないというだけではなく、私はもう少し経験を積んでいます。 –
この質問をご覧ください:http://stackoverflow.com/questions/8281589/develop-multilangual-system – raPHPid