globalizejs / globalize

A JavaScript library for internationalization and localization that leverages the official Unicode CLDR JSON data
https://globalizejs.com
MIT License
4.8k stars 605 forks source link

Version 1.4.2 : Need equivalent functionlity for Globalize.findClosestCulture().calendar.patterns #881

Closed ihari07 closed 4 years ago

ihari07 commented 4 years ago

Hi,

We are working on upgrading our globalize library from version 0.x to latest version 1.4.2.

We need a equivalent functionality for below property in Version 1.4.2 Globalize.findClosestCulture().calendar.patterns

I know that in latest version findClosestCulture() is not supported any more.

Based on the culture, we are getting calendar patterns in 0.x globalize. Howeever, i couldn't able to get the patterns in latest version.

imagine culture is set to 'en' Globalize.findClosestCulture().calendar.patterns

Output: { D: "dddd, MMMM dd, yyyy" F: "dddd, MMMM dd, yyyy h:mm:ss tt" M: "MMMM dd" S: "yyyy'-'MM'-'dd'T'HH':'mm':'ss" T: "h:mm:ss tt" Y: "yyyy MMMM" d: "M/d/yyyy" f: "dddd, MMMM dd, yyyy h:mm tt" t: "h:mm tt" }

I have tried to read cldr data content and get the calendar patterns in 1.4.2.

This is how we are creating globalize object now. I have tried see any equivalent property which gives calendar patterns like in old way, but i didn't get it.

const enGregorian = JSON.parse(require("text!cldr-data/main/en/ca-gregorian.json")), enCurrencies = JSON.parse(require("text!cldr-data/main/en/currencies.json")), enDateFields = JSON.parse(require("text!cldr-data/main/en/dateFields.json")), enNumbers = JSON.parse(require("text!cldr-data/main/en/numbers.json")), enTimeZoneNames = JSON.parse(require("text!cldr-data/main/en/timeZoneNames.json")), enUnits = JSON.parse(require("text!cldr-data/main/en/units.json")), currencyData = JSON.parse(require("text!cldr-data/supplemental/currencyData.json")), likelySubtags = JSON.parse(require("text!cldr-data/supplemental/likelySubtags.json")), metaZones = JSON.parse(require("text!cldr-data/supplemental/metaZones.json")), pluralsData = JSON.parse(require("text!cldr-data/supplemental/plurals.json")), timeData = JSON.parse(require("text!cldr-data/supplemental/timeData.json")), weekData = JSON.parse(require("text!cldr-data/supplemental/weekData.json"));

Globalize.load(likelySubtags, currencyData, enCurrencies, enDateFields, enGregorian, enNumbers, enTimeZoneNames, enUnits, metaZones, pluralsData, timeData, weekData);

this.globalize = Globalize('en');

Could you please guide me to write a function which gets same Output as mentioned sample object in latest version? Please let me know if i am missing something.

Thanks in advance.

rxaviers commented 4 years ago

I read two requests above:

  1. Find the best match given a requested locale and the available list of supported locales
  2. Get raw pattern data

Is that correct? Can you confirm?

ihari07 commented 4 years ago

I am looking for second point.

Is there any alternative for this Globalize.findClosestCulture().calendar.patterns in latest version?

rxaviers commented 4 years ago

Using globalize.cldr.get() (docs) to get the data you want (not recommended). It's recommended you use formatDate and simply get a formatted date using the library

rxaviers commented 4 years ago

Closing as not an issue

ihari07 commented 4 years ago

This is what i am gettting when i query Globalize.findClosestCulture().calendar.patterns in 0.x version.

{ D: "dddd, MMMM dd, yyyy" F: "dddd, MMMM dd, yyyy h:mm:ss tt" M: "MMMM dd" S: "yyyy'-'MM'-'dd'T'HH':'mm':'ss" T: "h:mm:ss tt" Y: "yyyy MMMM" d: "M/d/yyyy" f: "dddd, MMMM dd, yyyy h:mm tt" t: "h:mm tt" }

Now in version 1.x, is there anyway i can get the same object as above?