Opera ウィジェットでのローカライズについてですが
Opera ウィジェットではないです。
Opera ウィジェットの方ではなにもしてくれません。
なので自前で行うしかないです。
どうやって自前で行うかというと
jsファイルを言語ごとに分けておいて
表示したい言語によってそれを切り分けます。
対象となるエレメントを取得して削除しちゃいます。
そして読込みたいエレメントを追加します。
こんな風にsetLocalizedを呼んで言語ファイルを変更して
getStringを呼んでローカライズメッセージを取得します。
下記のような形で。
this.LANG_NAME = localizedStrings;
this.LANG_NAME_JS = this.LANG_NAME + “.js”;
this.ROOT_LOCATION = location.toString().substring(0, location.toString().lastIndexOf(“/”)) + “/”;
/**
* ローカライズの設定。
*
* @param <string> lang 言語名
*/
function setLocalized(lang) {
if (lang == null) {
throw new Error(“lang is null”);
}
if (this.gadget.isAIR()) {
return;
}
var jsObjList = document.getElementsByTagName(“script”);
for (var cnt = 0; cnt < jsObjList.length; cnt++) {
var jsSrc = jsObjList[cnt].src;
if (jsSrc.lastIndexOf(this.LANG_NAME_JS) < 0) {
continue;
}
var jsSrc = null;
if (lang == “ja”) {
jsSrc = this.LANG_NAME_JS;
} else {
jsSrc = lang + “/” + this.LANG_NAME_JS;
}
if (
jsObjList[cnt].src == jsSrc
|| jsObjList[cnt].src == this.ROOT_LOCATION + jsSrc
) {
break;
}
// 今のjsを削除
var headObj = jsObjList[cnt].parentNode;
headObj.removeChild(jsObjList[cnt]);
// 新しいjsを追加
var jsObj = document.createElement(“script”);
jsObj.src = jsSrc;
jsObj.onload = initSettingData;
headObj.appendChild(jsObj);
break;
} // for (var cnt = 0; cnt < jsObjList.length; cnt++)
}
/**
* ローカライズされた文字列の取得。
*
* @param <string> キー
* @return <string> ローカライズされた文字列
*/
function getString(key) {
if (key == null) {
throw new Error(“key is null”);
}
var ret = null;
try {
ret = localizedStrings[key];
} catch(ex) {
}
if (ret == null || ret === undefined) {
ret = key;
}
return ret;
}