devextreme
Version:
HTML5 JavaScript Component Suite for Responsive Web Development
91 lines (89 loc) • 3.83 kB
JavaScript
/**
* DevExtreme (cjs/__internal/core/localization/message.js)
* Version: 25.2.3
* Build date: Fri Dec 12 2025
*
* Copyright (c) 2012 - 2025 Developer Express Inc. ALL RIGHTS RESERVED
* Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/
*/
;
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.default = void 0;
var _core = _interopRequireDefault(require("../../core/localization/core"));
var _default_messages = require("../../core/localization/default_messages");
var _m_dependency_injector = require("../../core/utils/m_dependency_injector");
var _m_extend = require("../../core/utils/m_extend");
var _m_inflector = require("../../core/utils/m_inflector");
var _m_string = require("../../core/utils/m_string");
function _interopRequireDefault(e) {
return e && e.__esModule ? e : {
default: e
}
}
const baseDictionary = (0, _m_extend.extend)(true, {}, _default_messages.defaultMessages);
const getDataByLocale = (localeData, locale) => {
var _Object$entries$find;
return localeData[locale] || (null === locale || void 0 === locale ? void 0 : locale.toLowerCase) && (null === (_Object$entries$find = Object.entries(localeData).find((_ref => {
let [key] = _ref;
return key.toLowerCase() === locale.toLowerCase()
}))) || void 0 === _Object$entries$find ? void 0 : _Object$entries$find[1]) || {}
};
const newMessages = {};
const messageLocalization = (0, _m_dependency_injector.injector)({
engine: () => "base",
_dictionary: baseDictionary,
load(messages) {
(0, _m_extend.extend)(true, this._dictionary, messages)
},
_localizablePrefix: "@",
setup(localizablePrefix) {
this._localizablePrefix = localizablePrefix
},
localizeString(text) {
const that = this;
const regex = new RegExp(`(^|[^a-zA-Z_0-9${that._localizablePrefix}-]+)(${that._localizablePrefix}{1,2})([a-zA-Z_0-9-]+)`, "g");
const escapeString = that._localizablePrefix + that._localizablePrefix;
return text.replace(regex, ((_, prefix, escape, localizationKey) => {
const defaultResult = that._localizablePrefix + localizationKey;
let result;
if (escape !== escapeString) {
result = that.format(localizationKey)
}
if (!result) {
newMessages[localizationKey] = (0, _m_inflector.humanize)(localizationKey)
}
return prefix + (result || defaultResult)
}))
},
getMessagesByLocales() {
return this._dictionary
},
getDictionary(onlyNew) {
if (onlyNew) {
return newMessages
}
return (0, _m_extend.extend)({}, newMessages, this.getMessagesByLocales()[_core.default.locale()])
},
getFormatter(key) {
return this._getFormatterBase(key) || this._getFormatterBase(key, "en")
},
_getFormatterBase(key, _locale) {
const message = _core.default.getValueByClosestLocale((locale => getDataByLocale(this._dictionary, locale)[key]));
if (message) {
return function() {
const args = 1 === arguments.length && Array.isArray(arguments[0]) ? arguments[0].slice(0) : Array.prototype.slice.call(arguments, 0);
args.unshift(message);
return _m_string.format.apply(this, args)
}
}
return
},
format(key) {
const formatter = this.getFormatter(key);
const values = Array.prototype.slice.call(arguments, 1);
return (null === formatter || void 0 === formatter ? void 0 : formatter.apply(this, values)) || ""
}
});
var _default = exports.default = messageLocalization;