定数として設定るる内容がたくさんあるので、変更する際に1つのファイルでまとめたいときにやってみた備忘録。
事例:日本語向けのメッセージ設定ファイル、英語向けのメッセージ設定ファイル、中国語向けのメッセージ設定ファイル、ドイツ語向けのメッセージ設定ファイル…がある場合にフラグ一つで設定ファイルを変更したかった。
手法
設定ファイルはCDATA付きのxmlファイルで作成して、JavascriptはAjaxで、phpは普通に読み込む。
フラグはURL引数とかcookieで保持していればいい。
詳細
※↓クッキー参照で言語を判別する部分は省略しています。
xml取得部分のみ掲載です。
設定ファイルの例
■const_jpn.xml
<?xml version="1.0" encoding="UTF-8" ?> <my_const> <msg> <!-- ログイン --> <login><![CDATA[ログインしました]]></login> <!-- マイページ --> <mypage><![CDATA[ようこそ]]></mypage> </msg> </my_const>
呼び出し側の記述方法
■呼び出し元のphp
$constdata = file_get_contents("const_jpn.xml");
$my_const = simplexml_load_string($constdata,'SimpleXMLElement', LIBXML_NOCDATA);
echo $my_const -> msg -> login;//ログインメッセージの表示
■呼び出し元のjavascript
$.ajax({
url: "const_jpn.xml",
async: true,
cache: false,
dataType:"xml",
success: function(xml){
$("msg ",xml).each(function(){
alert($("login",this).text());//ログインメッセージの表示
})
}
});
もし、動的変数ならAjaxでphpからのJSONにした戻り値を使えばOK(よくある方法)

コメント