Quick and Dirty Localization
Demo
Hello
Good Morning
Good Evening
Register the Class
<script src="AcidJs.Lokalizr.js"></script>
Usage and Code Insight
(function() {
window.lang = new window.AcidJs.Lokalizr({
"en-US": {
"hello": "Hi",
"good-morning": "Good morning",
"good-evening": "Good evening"
},
"de-DE": {
"hello": "Hallo",
"good-morning": "Guten Morgen",
"good-evening": "Guten Abend"
}
}, "de-DE");
//window.lang.localize("en-US");
window.console.log("language string", window.lang.getLangString("de-DE", "hello"));
window.console.log("language string", window.lang.getLangString("de-DE", "good-morning"));
window.console.log("language string", window.lang.getLangString("de-DE", "good-evening"));
})(); (function() {
"use strict";
/*
* @namespace AcidJs
**/
if(undefined === window.AcidJs) {
window.AcidJs = {};
}
/*
* @class Lokalizr
* @constructor Lokalizr
* @param languages {Object} [required]
* @param defaultLanguage {String} [optional]
**/
function Lokalizr(languages, defaultLanguage) {
this.languages = languages || {};
if(defaultLanguage) {
this.localize(defaultLanguage);
}
}
Lokalizr.prototype = {
/*
* @map ATTR
* @public
**/
ATTRS: {
lang: "data-lang"
},
/*
* @map MESSAGES
* @public
**/
MESSAGES: {
invalid: "Invalid language code."
},
/*
* @method localize
* @public
* @param langCode {String} [required]
**/
localize: function(langCode) {
if(false === "querySelectorAll" in document) {
return;
}
var
lang = this.languages[langCode],
attr = this.ATTRS.lang,
elements = document.querySelectorAll("[" + attr + "]");
if(!lang) {
this.error(this.MESSAGES.invalid);
return;
}
for(var i = 0, len = elements.length; i < len; i++) {
var
element = elements[i],
key = element.getAttribute(attr);
element.innerHTML = lang[key];
}
},
/*
* @method getLangString
* @public
* @param langCode {String} [required]
* @param langString {String} [required]
* @return {String}
**/
getLangString: function(langCode, langString) {
if(langCode && langString) {
return this.languages[langCode][langString];
}
},
/*
* @method error
* @public
* @param message {String} [required]
**/
error: function(message) {
window.alert(message);
}
};
window.AcidJs.Lokalizr = Lokalizr;
})();