message.js 2.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364
  1. /**
  2. * DevExtreme (localization/globalize/message.js)
  3. * Version: 19.1.16
  4. * Build date: Tue Oct 18 2022
  5. *
  6. * Copyright (c) 2012 - 2022 Developer Express Inc. ALL RIGHTS RESERVED
  7. * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/
  8. */
  9. "use strict";
  10. require("./core");
  11. var Globalize = require("globalize");
  12. var messageLocalization = require("../message");
  13. var coreLocalization = require("../core");
  14. require("globalize/message");
  15. if (Globalize && Globalize.formatMessage) {
  16. var DEFAULT_LOCALE = "en";
  17. var originalLoadMessages = Globalize.loadMessages;
  18. Globalize.loadMessages = function(messages) {
  19. messageLocalization.load(messages)
  20. };
  21. var globalizeMessageLocalization = {
  22. ctor: function() {
  23. this.load(this._dictionary)
  24. },
  25. load: function(messages) {
  26. this.callBase(messages);
  27. originalLoadMessages(messages)
  28. },
  29. getMessagesByLocales: function() {
  30. return Globalize.cldr.get("globalize-messages")
  31. },
  32. getFormatter: function(key, locale) {
  33. var currentLocale = locale || coreLocalization.locale();
  34. var formatter = this._getFormatterBase(key, locale);
  35. if (!formatter) {
  36. formatter = this._formatterByGlobalize(key, locale)
  37. }
  38. if (!formatter && currentLocale !== DEFAULT_LOCALE) {
  39. formatter = this.getFormatter(key, DEFAULT_LOCALE)
  40. }
  41. return formatter
  42. },
  43. _formatterByGlobalize: function(key, locale) {
  44. var currentGlobalize = !locale || locale === coreLocalization.locale() ? Globalize : new Globalize(locale);
  45. var result;
  46. if (this._messageLoaded(key, locale)) {
  47. result = currentGlobalize.messageFormatter(key)
  48. }
  49. return result
  50. },
  51. _messageLoaded: function(key, locale) {
  52. var currentCldr = locale ? new Globalize(locale).cldr : Globalize.locale();
  53. var value = currentCldr.get(["globalize-messages/{bundle}", key]);
  54. return !!value
  55. },
  56. _loadSingle: function(key, value, locale) {
  57. var data = {};
  58. data[locale] = {};
  59. data[locale][key] = value;
  60. this.load(data)
  61. }
  62. };
  63. messageLocalization.inject(globalizeMessageLocalization)
  64. }