/** * Lang functions * * @author Pierre HUBERT */ ComunicWeb.common.langs = { /** * Languages list */ list: { en: { name: "English", local_name: "English" }, fr: { name: "French", local_name: "Français" } }, /** * Local storage lang item name */ _lang_storage_field_name: "comunic_v2_lang", /** * Currently selected language */ __currentLang: "en", /** * Default langage (updated on init) */ __defaultLang: "en", /** * Get current language * * @return {String} The id of the current language */ current: function(){ //Check if a language has been set in local storage if(localStorage.getItem(this._lang_storage_field_name) != null) return localStorage.getItem(this._lang_storage_field_name); //Get user language var language = navigator.language || navigator.userLanguage; if(language){ return language.split("-")[0]; } //Else return default language return ComunicWeb.__config.defaultLanguage; }, /** * Set language * * @param {String} lang The language to set */ setLang: function(lang){ //Set new language in local storage localStorage.setItem(this._lang_storage_field_name, lang); //Save name this.__currentLang = lang; }, /** * Language initiator * * @return {Boolean} False if it fails */ initLanguages: function(){ //Debug message ComunicWeb.debug.logMessage("Get and install languages..."); //Get languages to install this.__currentLang = this.current(); this.__defaultLang = ComunicWeb.__config.defaultLanguage; //Everything is OK return 0; }, /** * Return a string in correct language * * @param {String} stringName The name of the string to show * @param {Array} stringParams The optionnal parametres to include with the string * @return {String} The string ready to show */ getTranslatedText: function(stringName, stringParams){ if(!this[this.__currentLang]) return "Invalid language!"; //Try to get string if(this[this.__currentLang][stringName]) var string = this[this.__currentLang][stringName]; else if(this[this.__defaultLang][stringName]) var string = this[this.__defaultLang][stringName]; else var string = "No Translated String"; //Change string with parametres if required if(stringParams){ for(i in stringParams){ string = string.replace("%p", stringParams[i]); } } return string; }, } /** * Get current language * * @returns {string} */ function currLang() { return ComunicWeb.common.langs.current(); }