locize
Version:
This package adds the incontext editor to your i18next setup.
87 lines (80 loc) • 3.07 kB
JavaScript
;
Object.defineProperty(exports, '__esModule', { value: true });
var _defineProperty = require('@babel/runtime/helpers/defineProperty');
var _typeof = require('@babel/runtime/helpers/typeof');
function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
var _defineProperty__default = /*#__PURE__*/_interopDefaultLegacy(_defineProperty);
var _typeof__default = /*#__PURE__*/_interopDefaultLegacy(_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__default["default"](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__default["default"]({}, ns, _defineProperty__default["default"]({}, 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;
}
exports.getImplementation = getImplementation;