devextreme
Version:
HTML5 JavaScript Component Suite for Responsive Web Development
79 lines (56 loc) • 2.27 kB
JavaScript
require("./core");
var Globalize = require("globalize"),
messageLocalization = require("../message"),
coreLocalization = require("../core");
require("globalize/message");
if (Globalize && Globalize.formatMessage) {
var DEFAULT_LOCALE = "en";
var originalLoadMessages = Globalize.loadMessages;
Globalize.loadMessages = function (messages) {
messageLocalization.load(messages);
};
var globalizeMessageLocalization = {
ctor: function ctor() {
this.load(this._dictionary);
},
load: function load(messages) {
this.callBase(messages);
originalLoadMessages(messages);
},
getMessagesByLocales: function getMessagesByLocales() {
return Globalize.cldr.get("globalize-messages");
},
getFormatter: function getFormatter(key, locale) {
var currentLocale = locale || coreLocalization.locale(),
formatter = this._getFormatterBase(key, locale);
if (!formatter) {
formatter = this._formatterByGlobalize(key, locale);
}
if (!formatter && currentLocale !== DEFAULT_LOCALE) {
formatter = this.getFormatter(key, DEFAULT_LOCALE);
}
return formatter;
},
_formatterByGlobalize: function _formatterByGlobalize(key, locale) {
var currentGlobalize = !locale || locale === coreLocalization.locale() ? Globalize : new Globalize(locale),
result;
if (this._messageLoaded(key, locale)) {
result = currentGlobalize.messageFormatter(key);
}
return result;
},
_messageLoaded: function _messageLoaded(key, locale) {
var currentCldr = locale ? new Globalize(locale).cldr : Globalize.locale(),
value = currentCldr.get(["globalize-messages/{bundle}", key]);
return !!value;
},
_loadSingle: function _loadSingle(key, value, locale) {
var data = {};
data[locale] = {};
data[locale][key] = value;
this.load(data);
}
};
messageLocalization.inject(globalizeMessageLocalization);
}
;