Chrome Extension APIの国際化では、言語ごとに下記のようなmessage.jsonを_locales/<言語>フォルダに用意して、chrome.i18n.getMessage(key)
とやるわけですが、いちいち書いてたら面倒なのと、messages.jsonに該当キーがないときにエラーになって開発の妨げになるので、存在しないときはkey
をそのまま返すようにしました。
ソースコード
messages.json
{
"title" : { "message": "日本語のタイトル", "description": "" },
"description" : { "message": "日本語の説明", "description": "" }
}
JavaScript
function i18n(key) {
var n = chrome.i18n.getMessage(key);
return n ? n : key;
}
ちなみにmanifest.jsonでは__MSG_key__
とかいう感じで各言語の翻訳をもってこれますが、popup.htmlなどのHTMLではこれは使えないので、多国語対応したいHTML要素はすべてJavaScriptで文字列を翻訳してあげる必要があります。