jitsi-meet/modules/translation/translation.js
Leonard Kim c9b54845d9 ref(settings): convert panel to react
The goal is to reduce usage on atlassian/aui. New components
have been created to display the settings panel. Language
selection will reach into i18n for state whereas moderator
options will keep state in redux.
2017-12-04 16:19:18 -06:00

61 lines
1.3 KiB
JavaScript

/* @flow */
import jqueryI18next from 'jquery-i18next';
import { i18next } from '../../react/features/base/i18n';
declare var $: Function;
/**
* Notifies that the {@link i18next} instance has finished its initialization.
*
* @returns {void}
* @private
*/
function _onI18nInitialized() {
$('[data-i18n]').localize();
}
/**
*
*/
class Translation {
/**
*
*/
generateTranslationHTML(key: string, options: Object) {
const optAttr
= options ? ` data-i18n-options='${JSON.stringify(options)}'` : '';
// XXX i18next expects undefined if options are missing.
const text = i18next.t(key, options ? options : undefined);
return `<span data-i18n="${key}"${optAttr}>${text}</span>`;
}
/**
*
*/
init() {
jqueryI18next.init(i18next, $, { useOptionsAttr: true });
if (i18next.isInitialized) {
_onI18nInitialized();
} else {
i18next.on('initialized', _onI18nInitialized);
}
i18next.on('languageChanged', _onI18nInitialized);
}
/**
*
*/
translateElement(selector: Object, options: Object) {
// XXX i18next expects undefined if options are missing.
selector.localize(options ? options : undefined);
}
}
export default new Translation();