vnLocaleStrings = {}; /** * Class to manage the internationalization. **/ module.exports = { language: null ,init: function () { if (!this.language) { var language = navigator.language.substr (0, 2); this.language = language ? language : 'en'; } } ,load: function (path, callback) { this.init (); var file = 'locale/'+ this.language +'/'+ path +'.json'+ Vn.getVersion (); var request = new XMLHttpRequest (); request.open ('get', file, true); request.onreadystatechange = this.loadDone.bind (this, request, callback); request.send (); } ,loadScript: function (path, callback) { this.init (); Vn.includeJs ('locale/'+ this.language +'/'+ path, callback); } ,loadDone: function (request, callback) { if (request.readyState != 4) return; var success = false; if (request.status == 200) { try { this.add (JSON.parse (request.responseText)); success = true; } catch (e) { console.log ('Locale: %s', e); } } callback (success); } ,add: function (translations) { for (var str in translations) vnLocaleStrings[str] = translations[str]; } } window._ = function (stringId) { var string = vnLocaleStrings[stringId]; return (string) ? string : stringId; }