0

翻訳を簡単に作成できるように、php アプリケーションの言語システムを再構築しています。

私が行ったことの 1 つは、すべてを 1 つの大きな配列 $lang; に変換することでした。これがどのように見えるかの例です:

$lang['common:login'] = "Login";
$lang['common:signup'] = "Sign Up";
$lang['index:title'] = "Home Page";
$lang['messages:newmessages'] = "You have %s new messages";

次のコードを使用してロードします。

require_once "lang/en/lang.php";

$lang['common:login'] を呼び出しても問題はありません。過去に行った他の方法と比較して、これらをロードする関数を作成すると、問題が発生しました。

function outputLanguage($tag) {

    global $lang;

    //see if tag exists.
    if (!in_array($tag, $lang)) {
       return $tag." is an invalid language tag.";
    }  else {
       return $lang[$tag];
    }
}

in_array() は、別のソースからインクルードされた配列を操作したくないようです。

誰かが間違いを犯した場合に備えて、正直に検証したいのですが、良い解決策を知っている人はいますか?

ありがとう。

4

2 に答える 2

3

array_key_exists代わりに使用する必要がありますin_array

于 2013-11-14T19:08:51.073 に答える
0

配列キーを探している場合は、次を試してください。

if(!isset($lang[$tag])) {
    return $tag." is an invalid language tag.";
} else {
    return $lang[$tag];
}

または私は戻りfalseます:

return isset($lang[$tag]) ? $lang[$tag] : false;
于 2013-11-14T19:11:05.383 に答える