UNPKG

svgedit

Version:

Powerful SVG-Editor for your browser

86 lines (76 loc) 2.36 kB
/** * Localizing script for SVG-edit UI. * @module locale * @license MIT * * @copyright 2010 Narendra Sisodya * @copyright 2010 Alexis Deveria * */ import i18next from 'i18next' /** * The string keys of the object are two-letter language codes. * @tutorial LocaleDocs * @typedef {PlainObject<string, string|module:locale.LocaleStrings|module:locale.LocaleArray>} module:locale.LocaleStrings */ // keyed to an array of objects with "id" and "title" or "textContent" properties /** * @typedef {PlainObject<string, string>} module:locale.LocaleSelectorValue */ let langParam /** * The "data" property is generally set to an an array of objects with * "id" and "title" or "textContent" properties. * @typedef {PlainObject} module:locale.AddLangExtensionLocaleData * @property {module:locale.LocaleStrings[]} data See {@tutorial LocaleDocs} */ /** * @interface module:locale.LocaleEditorInit */ /** * @function module:locale.LocaleEditorInit#addLangData * @param {string} langParam * @returns {module:locale.AddLangExtensionLocaleData} */ /** * @typedef {PlainObject} module:locale.LangAndData * @property {string} langParam * @property {module:locale.LocaleStrings} langData */ /** * * @function module:locale.putLocale * @param {string} givenParam * @param {string[]} goodLangs * @fires module:svgcanvas.SvgCanvas#event:ext_addLangData * @fires module:svgcanvas.SvgCanvas#event:ext_langReady * @fires module:svgcanvas.SvgCanvas#event:ext_langChanged * @returns {Promise<module:locale.LangAndData>} Resolves to result of {@link module:locale.readLang} */ export const putLocale = async function (givenParam, goodLangs) { if (givenParam) { langParam = givenParam } else if (navigator.userLanguage) { // Explorer langParam = navigator.userLanguage } else if (navigator.language) { // FF, Opera, ... langParam = navigator.language } // Set to English if language is not in list of good langs if (!goodLangs.includes(langParam) && langParam !== 'test') { langParam = 'en' } const module = await import(`./locale/lang.${encodeURIComponent(langParam)}.js`) i18next.init({ lng: langParam, debug: false, resources: { [langParam]: { translation: module.default } } }) return { langParam, i18next } } export const t = function (key) { return i18next.t(key) }