'use strict';
define('lang', function() {
/**
* Module that allows to display language keys client side
* @class Lang
*/
var Lang = {
/**
* Init the module with keys
*
* @static
* @param {Object} data The language keys to load
* @memberOf Lang
*/
init : function(data) {
this.langs = data;
},
/**
* Get the value for a language key for the user language
*
* @static
* @param {string} langKey The language key
* @param {Object} vars The variables to set in the translation
* @param {int} number This variable can be set if the language key has singular or plural translations
* @returns {string} The translated language key
* @memberOf Lang
*/
get : function(langKey, vars, number) {
var data = langKey.split('.');
var plugin = data[0];
var key = data[1];
var label = this.langs[plugin] && this.langs[plugin][key];
if (label !== undefined) {
if (typeof label === 'object' && number !== undefined) {
if (number > 1) {
label = label[number] || label.p;
}
else {
label = label[number] || label.s;
}
}
if (vars !== undefined && typeof vars === 'object') {
for (var param in vars) {
if (vars.hasOwnProperty(param)) {
label = label.replace('{' + param + '}', vars[param]);
}
}
}
return label;
}
return langKey;
},
/**
* Check if a language key exists
*
* @static
* @memberOf Lang
* @param {string} langKey The language key to find
* @returns {boolean} True if the language key exists, else False
*/
exists : function(langKey) {
var data = langKey.split('.'),
plugin = data[0],
key = data[1],
label = this.langs[plugin] && this.langs[plugin][key];
return label !== undefined;
},
/**
* Set a language key translation
*
* @static
* @memberOf Lang
* @param {string} langKey The language key
* @param {string} value The translation value
*/
set : function(langKey, value) {
var data = langKey.split('.'),
plugin = data[0],
key = data[1];
if (!this.langs[plugin]) {
this.langs[plugin] = {};
}
this.langs[plugin][key] = value;
}
};
return Lang;
});