locize
Version:
This package adds the incontext editor to your i18next setup.
78 lines (75 loc) • 2.65 kB
JavaScript
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 };