2019-04-17 15:58:15 +02:00
|
|
|
function _toConsumableArray(arr) { if (Array.isArray(arr)) { for (var i = 0, arr2 = Array(arr.length); i < arr.length; i++) { arr2[i] = arr[i]; } return arr2; } else { return Array.from(arr); } }
|
|
|
|
|
|
|
|
import en from '../../../locale/en';
|
|
|
|
import { getObjectValueByPath } from '../../../util/helpers';
|
|
|
|
import { consoleError, consoleWarn } from '../../../util/console';
|
|
|
|
var LANG_PREFIX = '$vuetify.';
|
|
|
|
var fallback = Symbol('Lang fallback');
|
|
|
|
function getTranslation(locale, key) {
|
|
|
|
var usingFallback = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;
|
|
|
|
|
|
|
|
var shortKey = key.replace(LANG_PREFIX, '');
|
|
|
|
var translation = getObjectValueByPath(locale, shortKey, fallback);
|
|
|
|
if (translation === fallback) {
|
|
|
|
if (usingFallback) {
|
|
|
|
consoleError('Translation key "' + shortKey + '" not found in fallback');
|
|
|
|
translation = key;
|
|
|
|
} else {
|
|
|
|
consoleWarn('Translation key "' + shortKey + '" not found, falling back to default');
|
|
|
|
translation = getTranslation(en, key, true);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
return translation;
|
|
|
|
}
|
|
|
|
export default function lang() {
|
|
|
|
var config = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
|
|
|
|
|
|
|
|
return {
|
|
|
|
locales: Object.assign({ en: en }, config.locales),
|
|
|
|
current: config.current || 'en',
|
|
|
|
t: function t(key) {
|
|
|
|
for (var _len = arguments.length, params = Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {
|
|
|
|
params[_key - 1] = arguments[_key];
|
|
|
|
}
|
|
|
|
|
|
|
|
if (!key.startsWith(LANG_PREFIX)) return key;
|
|
|
|
if (config.t) return config.t.apply(config, [key].concat(_toConsumableArray(params)));
|
|
|
|
var translation = getTranslation(this.locales[this.current], key);
|
|
|
|
return translation.replace(/\{(\d+)\}/g, function (match, index) {
|
|
|
|
return String(params[+index]);
|
|
|
|
});
|
|
|
|
}
|
|
|
|
};
|
|
|
|
}
|
2019-06-04 14:29:48 +02:00
|
|
|
//# sourceMappingURL=lang.js.map
|