Share Gaia assets and adapters, keep private profiles and development documents local, and update both public READMEs.
69 lines
1.8 KiB
JavaScript
Executable file
69 lines
1.8 KiB
JavaScript
Executable file
/**
|
|
* The moudle supports displaying language information on an element.
|
|
*
|
|
* @module panels/root/language_item
|
|
*/
|
|
define(function(require) {
|
|
'use strict';
|
|
|
|
var LanguageList = require('shared/language_list');
|
|
|
|
/**
|
|
* @alias module:panels/root/language_item
|
|
* @class LanguageItem
|
|
* @param {HTMLElement} element
|
|
The element displaying the language information
|
|
* @returns {LanguageItem}
|
|
*/
|
|
function LanguageItem(element) {
|
|
this._enabled = false;
|
|
this._boundRefreshText = this._refreshText.bind(this, element);
|
|
}
|
|
|
|
LanguageItem.prototype = {
|
|
/**
|
|
* Refresh the text based on the language setting.
|
|
*
|
|
* @access private
|
|
* @memberOf LanguageItem.prototype
|
|
* @param {HTMLElement} element
|
|
The element displaying the language information
|
|
*/
|
|
_refreshText: function l_refeshText(element) {
|
|
// display the current locale in the main panel
|
|
LanguageList.get(function displayLang(languages, currentLanguage) {
|
|
element.textContent = LanguageList.wrapBidi(
|
|
currentLanguage, languages[currentLanguage]);
|
|
});
|
|
},
|
|
|
|
/**
|
|
* The value indicates whether the module is responding.
|
|
*
|
|
* @access public
|
|
* @memberOf LanguageItem.prototype
|
|
* @type {Boolean}
|
|
*/
|
|
get enabled() {
|
|
return this._enabled;
|
|
},
|
|
|
|
set enabled(value) {
|
|
if (this._enabled === value || !document.l10n) {
|
|
return;
|
|
}
|
|
|
|
this._enabled = value;
|
|
if (this._enabled) {
|
|
document.addEventListener('DOMRetranslated', this._boundRefreshText);
|
|
this._boundRefreshText();
|
|
} else {
|
|
document.removeEventListener('DOMRetranslated', this._boundRefreshText);
|
|
}
|
|
}
|
|
};
|
|
|
|
return function ctor_languageItem(element) {
|
|
return new LanguageItem(element);
|
|
};
|
|
});
|