RSS Git Download  Clone
Raw Blame History 6kB 85 lines
/**
 * Standalone translation storage and lazy-loading.
 *
 * Decoupled from the p3xr global. Both main.js (pre-Angular) and I18nService
 * (Angular) import from this module.
 */
const translations = {}

function getTranslations() {
    return translations
}

/**
 * Lazily load a translation chunk. Each case produces a separate webpack chunk
 * (~25 KiB each) loaded only when needed.
 */
function loadTranslation(lang) {
    if (translations[lang]) {
        return Promise.resolve(translations[lang])
    }
    let loader
    switch (lang) {
        case 'ar':    loader = import(/* webpackChunkName: "i18n-ar"    */ '../strings/ar/strings');    break
        case 'az':    loader = import(/* webpackChunkName: "i18n-az"    */ '../strings/az/strings');    break
        case 'be':    loader = import(/* webpackChunkName: "i18n-be"    */ '../strings/be/strings');    break
        case 'bg':    loader = import(/* webpackChunkName: "i18n-bg"    */ '../strings/bg/strings');    break
        case 'bn':    loader = import(/* webpackChunkName: "i18n-bn"    */ '../strings/bn/strings');    break
        case 'cs':    loader = import(/* webpackChunkName: "i18n-cs"    */ '../strings/cs/strings');    break
        case 'da':    loader = import(/* webpackChunkName: "i18n-da"    */ '../strings/da/strings');    break
        case 'de':    loader = import(/* webpackChunkName: "i18n-de"    */ '../strings/de/strings');    break
        case 'el':    loader = import(/* webpackChunkName: "i18n-el"    */ '../strings/el/strings');    break
        case 'es':    loader = import(/* webpackChunkName: "i18n-es"    */ '../strings/es/strings');    break
        case 'et':    loader = import(/* webpackChunkName: "i18n-et"    */ '../strings/et/strings');    break
        case 'fi':    loader = import(/* webpackChunkName: "i18n-fi"    */ '../strings/fi/strings');    break
        case 'fil':   loader = import(/* webpackChunkName: "i18n-fil"   */ '../strings/fil/strings');   break
        case 'fr':    loader = import(/* webpackChunkName: "i18n-fr"    */ '../strings/fr/strings');    break
        case 'he':    loader = import(/* webpackChunkName: "i18n-he"    */ '../strings/he/strings');    break
        case 'hr':    loader = import(/* webpackChunkName: "i18n-hr"    */ '../strings/hr/strings');    break
        case 'hu':    loader = import(/* webpackChunkName: "i18n-hu"    */ '../strings/hu/strings');    break
        case 'hy':    loader = import(/* webpackChunkName: "i18n-hy"    */ '../strings/hy/strings');    break
        case 'id':    loader = import(/* webpackChunkName: "i18n-id"    */ '../strings/id/strings');    break
        case 'it':    loader = import(/* webpackChunkName: "i18n-it"    */ '../strings/it/strings');    break
        case 'ja':    loader = import(/* webpackChunkName: "i18n-ja"    */ '../strings/ja/strings');    break
        case 'ka':    loader = import(/* webpackChunkName: "i18n-ka"    */ '../strings/ka/strings');    break
        case 'kk':    loader = import(/* webpackChunkName: "i18n-kk"    */ '../strings/kk/strings');    break
        case 'km':    loader = import(/* webpackChunkName: "i18n-km"    */ '../strings/km/strings');    break
        case 'ko':    loader = import(/* webpackChunkName: "i18n-ko"    */ '../strings/ko/strings');    break
        case 'ky':    loader = import(/* webpackChunkName: "i18n-ky"    */ '../strings/ky/strings');    break
        case 'lt':    loader = import(/* webpackChunkName: "i18n-lt"    */ '../strings/lt/strings');    break
        case 'mk':    loader = import(/* webpackChunkName: "i18n-mk"    */ '../strings/mk/strings');    break
        case 'ms':    loader = import(/* webpackChunkName: "i18n-ms"    */ '../strings/ms/strings');    break
        case 'ne':    loader = import(/* webpackChunkName: "i18n-ne"    */ '../strings/ne/strings');    break
        case 'nl':    loader = import(/* webpackChunkName: "i18n-nl"    */ '../strings/nl/strings');    break
        case 'no':    loader = import(/* webpackChunkName: "i18n-no"    */ '../strings/no/strings');    break
        case 'pl':    loader = import(/* webpackChunkName: "i18n-pl"    */ '../strings/pl/strings');    break
        case 'pt-BR': loader = import(/* webpackChunkName: "i18n-pt-BR" */ '../strings/pt-BR/strings'); break
        case 'pt-PT': loader = import(/* webpackChunkName: "i18n-pt-PT" */ '../strings/pt-PT/strings'); break
        case 'ro':    loader = import(/* webpackChunkName: "i18n-ro"    */ '../strings/ro/strings');    break
        case 'ru':    loader = import(/* webpackChunkName: "i18n-ru"    */ '../strings/ru/strings');    break
        case 'sk':    loader = import(/* webpackChunkName: "i18n-sk"    */ '../strings/sk/strings');    break
        case 'sl':    loader = import(/* webpackChunkName: "i18n-sl"    */ '../strings/sl/strings');    break
        case 'sr':    loader = import(/* webpackChunkName: "i18n-sr"    */ '../strings/sr/strings');    break
        case 'sv':    loader = import(/* webpackChunkName: "i18n-sv"    */ '../strings/sv/strings');    break
        case 'tg':    loader = import(/* webpackChunkName: "i18n-tg"    */ '../strings/tg/strings');    break
        case 'th':    loader = import(/* webpackChunkName: "i18n-th"    */ '../strings/th/strings');    break
        case 'tr':    loader = import(/* webpackChunkName: "i18n-tr"    */ '../strings/tr/strings');    break
        case 'uk':    loader = import(/* webpackChunkName: "i18n-uk"    */ '../strings/uk/strings');    break
        case 'vi':    loader = import(/* webpackChunkName: "i18n-vi"    */ '../strings/vi/strings');    break
        case 'zh-HK': loader = import(/* webpackChunkName: "i18n-zh-HK" */ '../strings/zh-HK/strings'); break
        case 'zh-TW': loader = import(/* webpackChunkName: "i18n-zh-TW" */ '../strings/zh-TW/strings'); break
        case 'zn':    loader = import(/* webpackChunkName: "i18n-zn"    */ '../strings/zn/strings');    break
        case 'bs':    loader = import(/* webpackChunkName: "i18n-bs"    */ '../strings/bs/strings');    break
        case 'si':    loader = import(/* webpackChunkName: "i18n-si"    */ '../strings/si/strings');    break
        case 'sw':    loader = import(/* webpackChunkName: "i18n-sw"    */ '../strings/sw/strings');    break
        case 'ta':    loader = import(/* webpackChunkName: "i18n-ta"    */ '../strings/ta/strings');    break
        default:      return Promise.resolve(translations['en'])
    }
    return loader.then(m => {
        translations[lang] = m.default || m
        return translations[lang]
    })
}

module.exports = { getTranslations, loadTranslation }