// commonjs code goes here import i18next from 'i18next'; import XHR from 'i18next-xhr-backend'; import LngDetector from 'i18next-browser-languagedetector'; import Cache from 'i18next-localstorage-cache'; import localstorage from './localstorage'; window.i18n = i18next; function loadPath(languages) { var language = languages[0]; if (language.indexOf('-') >= 0) { language = language.replace('-', '_'); // Change zh-Hans to zh_Hans. } return '/static/locale/' + language + '/translations.json'; } var backendOptions = { loadPath: loadPath, }; var callbacks = []; var initialized = false; var detectionOptions = { order: ['htmlTag'], htmlTag: document.documentElement, }; var cacheOptions = { enabled: !page_params.development, prefix: 'i18next:' + page_params.server_generation + ':', expirationTime: 2*24*60*60*1000, // 2 days }; i18next.use(XHR) .use(LngDetector) .use(Cache) .init({ nsSeparator: false, keySeparator: false, interpolation: { prefix: "__", suffix: "__", }, backend: backendOptions, detection: detectionOptions, cache: cacheOptions, fallbackLng: 'en', returnEmptyString: false, // Empty string is not a valid translation. }, function () { var i; initialized = true; for (i=0; i 1484902202:en // these are all language translation strings. var translations = Object.keys(localStorage).filter(function (key) { return /^i18next:\d{10}:\w+$/.test(key); }); var current_generation_key = 'i18next:' + page_params.server_generation; // remove cached translations of older versions. translations.forEach(function (translation_key) { if (translation_key.indexOf(current_generation_key) !== 0) { localStorage.removeItem(translation_key); } }); return this; });