|
Tweet
|
JSファイルに埋めこまれている文字列をプロパティファイル(.properties)に記述(外部化)します。
プロパティファイルの作成については、Java国際化プログラミング - メッセージをご参照ください。
必要なJSファイル(jquery.min.js、jquery.i18n.properties.js)を読み込みます。
以下の二つの方法があります。
A. 元のHTMLのスクリプトタグに埋めこむ (通常の方法)
<head> ... <script src="js/jquery.min.js" type="text/javascript"></script> <script src="js/jquery.i18n.properties.js" type="text/javascript"></script> ...
function wwnaviHttpRequest(){
if(window.ActiveXObject){
try{
return new ActiveXObject("Msxml2.XMLHTTP");
}catch(e){
try {
return new ActiveXObject("Microsoft.XMLHTTP");
}catch(e2){
return null;
}
}
}else if(window.XMLHttpRequest){
return new XMLHttpRequest();
}else{
return null;
}
}
function wwnaviLoadJs(url){
htoj = wwnaviHttpRequest();
htoj.open("GET", url, false);
htoj.send(null);
return htoj.responseText;
}
eval(wwnaviLoadJs('wwnaviRs/jquery.min.js'));
eval(wwnaviLoadJs('wwnaviRs/jquery.i18n.properties.js'));
* 必要なJSファイルを同期通信(*1)で読み込み、実行しています。
... (JSのコード)
(*1)非同期通信の場合、読み込みが完了する前にコードが実行されるのでうまく処理されません。
上記の読み込みの直後に、プロパティファイルの場所や名前、対象言語などを設定する処理を記述します。
jQuery.i18n.properties({name:'wwnaviBundle(*1)',path:'wwnaviRs(*2)/',mode:'both',
language:wwnaviGetLang()(*3),callback:function(){}});
(*1)プロパティファイルの名前(基底名)です。
function wwnaviGetLang(){
return (navigator.userLanguage||navigator.browserLanguage||navigator.language).substr(0,2);
}
*ブラウザ設定の値を使いたい場合は、jQuery-Browser-Languageが使えます。
$.browserLanguage(function( language , acceptHeader ){
var l = acceptHeader; l = l.substring(0,2);
jQuery.i18n.properties({name:'wwnaviBundle',path:'wwnaviRs/',mode:'both',language:l,callback:function(){}});
});
※ブラウザの言語情報の取得については、ロケール、書式、タイムゾーンをご参照ください。メッセージ読み込みのコードを文字列の位置に埋めこみます。
var msg1 = jQuery.i18n.prop("sample1_1(*1)");
(*1)1.で作成したプロパティファイルの対応するキーです。
.propertiesファイルを初期化コードで指定したパスに配置します。
ファイル名は以下の規則に従います。
基底名(例:"wwnaviBundle") + "_" + 言語名(例:"ja")基底名だけのファイルはデフォルトのリソースとなり、対応する言語のものがある場合は、そちらが読み込まれます。
../wwnaviRs/wwnaviBundle.properties ... English (default) ../wwnaviRs/wwnaviBundle_ja.properties ... Japanese ../wwnaviRs/wwnaviBundle_ko.properties ... Korean