UNPKG

devextreme

Version:

HTML5 JavaScript Component Suite for Responsive Web Development

91 lines (89 loc) 3.83 kB
/** * 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/ */ "use strict"; 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;