UNPKG

locize

Version:

This package adds the incontext editor to your i18next setup.

78 lines (75 loc) 2.65 kB
import _defineProperty from '@babel/runtime/helpers/esm/defineProperty'; import _typeof from '@babel/runtime/helpers/esm/typeof'; function getImplementation(i18n) { var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}; var sourceLng = options.sourceLng || 'en'; var defaultNS = options.defaultNS || 'common'; var readLocale = function readLocale() { if (i18n.locale && _typeof(i18n.locale) === 'object' && 'value' in i18n.locale) { return i18n.locale.value; } return i18n.locale; }; var impl = { getResource: function getResource(lng, ns, key) { var msgs = i18n.getLocaleMessage(lng) || {}; return msgs[ns] && msgs[ns][key]; }, setResource: function setResource(lng, ns, key, value) { i18n.mergeLocaleMessage(lng, _defineProperty({}, ns, _defineProperty({}, key, value))); }, getResourceBundle: function getResourceBundle(lng, ns, cb) { var msgs = i18n.getLocaleMessage(lng) || {}; cb(msgs[ns] || {}); }, getDefaultNS: function getDefaultNS() { return defaultNS; }, getLng: readLocale, getSourceLng: function getSourceLng() { return sourceLng; }, getLocizeDetails: function getLocizeDetails() { return { projectId: options.projectId, version: options.version || 'latest', backendName: options.backendName, sourceLng: sourceLng, i18nFormat: 'vuei18n', i18nFramework: 'vue-i18n', defaultNS: defaultNS, ns: options.ns || [defaultNS], targetLngs: (options.targetLngs || []).filter(function (l) { return l !== sourceLng; }) }; }, bindLanguageChange: function bindLanguageChange(cb) { if (typeof options.watch !== 'function') return; options.watch(readLocale, function (lng) { try { cb(lng); } catch (_) {} }); }, bindMissingKeyHandler: function bindMissingKeyHandler(cb) { var prev = i18n.missing; i18n.missing = function (locale, key, vm, values) { var dot = key.indexOf('.'); var ns = dot >= 0 ? key.slice(0, dot) : defaultNS; var actualKey = dot >= 0 ? key.slice(dot + 1) : key; try { cb(locale, ns, actualKey, key); } catch (_) {} if (typeof prev === 'function') return prev(locale, key, vm, values); }; }, triggerRerender: function triggerRerender() { var lng = readLocale(); var msgs = i18n.getLocaleMessage(lng) || {}; i18n.setLocaleMessage(lng, Object.assign({}, msgs)); } }; return impl; } export { getImplementation };