1.46     2026-08-25

- Rebuilt all locale data with the data from CLDR 48.2.0


1.45     2025-04-01

- Rebuilt all locale data with the data from CLDR 47.0.0


1.44     2024-10-27

- Rebuilt all locale data with the data from CLDR 46.0.0


1.43     2024-07-27

- Fixed the prefers_24_hour_time method. This was incorrectly returning false when the locale's
  time_format_short method contained a quote string with "h" or "K" in it. For example, the fr-CA
  locale's time_format_short is `HH 'h' mm`. The quoted 'h' caused this method to return
  false. Fixed by Jacques Deguest (@jackdeguest). PR #39.


1.42     2024-04-18

- Rebuilt all locale data with the data from CLDR 45.0.0


1.41     2024-04-06

- Rebuilt all locale data with the data from CLDR 44.1.0.


1.40     2023-11-04

- Rebuilt all locale data with the data from CLDR 44.0.1.


1.39     2023-05-28

- Fixed parsing of the 'el-polyton' locale code. This had the same issue as
  'be-tarask', which was fixed in 1.36. This is now fixed in such a way that
  similar `$language-$variant` codes will be parsed correctly in the
  future. Reported by @yvanzo. GH #37.


1.38     2023-04-14

- Rebuilt all locale data with the data from CLDR 43.0.0.


1.37     2022-10-23

- Rebuilt all locale data with the data from CLDR 42.0.0.


1.36     2022-08-20

- Fixed misparsing of the `be-tarask` locale code. This is a locale with just
  a language name and a variant. The locale parsing code assumed that all
  two-part locale codes had either a script or territory, not a variant. This
  caused the catalog to show the name of this locale as "Belarusian", the same
  as the `be` code. Reported by yvanzo. Fixes GH #32.


1.35     2022-04-23

- The code passed to DateTime::Locale->load is now validated and untainted
  before using it to load and eval data from the filesystem. I don't think
  there were any security issues without this, as the load method would only
  attempt to load data from disk if the code was already known. This means
  that attempting to pass in any sort of arbitrary path to the load method
  would simply result in an error that the code was invalid, and there would
  be no attempt to read from disk. Based on GH #30. Implemented by James
  Raspass.


1.34     2022-04-08

- Rebuilt all locale data with the data from CLDR 41.0.0.


1.33     2021-10-30

- Rebuilt all locale data with the data from CLDR 40.0.0. There are some
  notable data changes in CLDR 40.0.0.

- Data change: The root locale is now named "und", not "root".

- Data change: The "en-US-POSIX" locale has been removed from CLDR. If you
  load this locale you will now get the "en-US" locale.


1.32     2021-04-30

- Rebuilt all locale data with the data from CLDR 39.0.0.


1.31     2020-12-22

- The docs for each locale now show examples of its strftime patterns as well.


1.30     2020-12-15

- The previous release included some locale data for locales that had been
  deleted from CLDR 38.0.0.


1.29     2020-12-14

- Rebuilt all locale data with the data from CLDR 38.0.0 and glibc 2.32.


1.28     2020-08-28

- Move a test that was added in 1.27 to xt. This test is a sensitive to small
  variations in error message text, and testing it locally and in CI is
  sufficient. Reported by Kent Fredric. GH #27.


1.27     2020-08-28

- The $locale->locale_data method now returns a deep clone of the locale's
  data. This allows you to safely modify any elements of the returned hash
  without breaking the original locale. Implemented by Alexander Pankoff. GH
  #26.

- We now support loading locale data from relative directories in
  @INC. Implemented by Alexander Pankoff. GH #25.

- When loading locale data, we now check $! for read errors, as well as
  checking for an error eval'ing the file's contents in $@. Fixed by Alexander
  Pankoff. GH #24.


1.26     2020-07-03

- Rebuilt all locale data with CLDR 37, released on 2020-04-23.


1.25     2019-10-09

- Rebuilt all locale data with CLDR 36, released on 2019-10-04.


1.24     2019-03-28

- Rebuilt all locale data with CLDR 35, released on 2019-03-27.


1.23     2018-10-17

- Rebuilt all locale data with CLDR 34, released on 2018-10-15.


1.22     2018-06-08

- Rebuilt all locale data with the glibc data from glibc 2.27.

- Added documentation for this glibc data.

- Reformatted the DateTime::Locale::FromData docs.


1.21     2018-06-08

- Added a new DateTime::Local->register_from_data method. This replaces the
  old custom locale registration system with something much simpler. Instead
  of providing a new class you simply provide a hash of data for the locale
  and it becomes available for use via DateTime::Local->load. Implemented by
  Ryley Breiddal. PR #21. Addresses GH #19.


1.20     2018-05-06

- Fix test failures on Windows. Reported by Adrian Devries. GH #23.


1.19     2018-04-21

- Fix handling of a locale (nds) that does not provide a native name for its
  own locale code. This is a bug in CLDR, but since it exists we should handle
  it sanely.

- If you attempted to thaw a DateTime::Locale::FromData object in a process
  that had not loaded DateTime::Locale this would fail. Reported by Gregor
  Herrmann. GH #18.


1.18     2018-04-03

- Rebuilt all locale data with CLDR 33, released on 2018-03-26.


1.17     2017-11-04

- Rebuilt all locale data with CLDR 32, released on 2017-11-01.


1.16     2017-03-22

- Rebuilt all locale data with CLDR 31, released on 2017-03-20.


1.15     2017-03-15 (TRIAL RELEASE)

- Most data is now stored in a share dir and only loaded as needed. This
  should reduce the memory usage from just loading DateTime::Locale by about
  4mb. Based on a PR by sergey. GH #14.


1.14     2017-03-05

- Codes with just a language and script code were not parsed correctly,
  leading to bugs in their data, so that they did not report a script_code,
  nor did their name reflect the script. So for example "bs-Latn" was just
  "Bosnian" instead of "Bosnian Latin".


1.13     2017-03-05

- Fixed a regression bug where providing a locale's English name or native
  name to DateTime::Locale->load no longer worked. Fixed by Sergey. GH #13.


1.12     2017-01-29

- Rebuilt all locale data with CLDR 30.0.3, released on 2016-12-02.


1.11     2016-11-12

- Switched from RT to the GitHub issue tracker.


1.10     2016-10-22

- Don't let warnings from other modules cause t/09version-check.t to
  fail. Reported by Graham Ollis. RT #118465


1.09     2016-10-10

- Rebuilt all locale data with CLDR 30, released on 2016-10-05.


1.08     2016-09-23

- Require namespace::autoclean 0.19+.


1.07     2016-09-17

- Bump minimum required Perl to 5.8.4 from 5.8.1. This matches DateTime.pm
  itself.


1.06     2016-09-16

- Replaced Params::Validate with Params::ValidationCompiler.


1.05     2016-06-26

- Instead of using the DATA handle to get at as-yet-unloaded locale data in
  DateTime::Locale::Data, we now read the raw data into memory once, and use
  eval to turn it into Perl data structures as a particular locale is
  requested. This may fix a problem where reading from the DATA handle somehow
  returned the wrong chunk of data (or overlapped multiple locales). The
  downside is that loading DateTime::Locale now uses an additional 4MB of
  memory on my system, regardless of how many individual locales are
  instantiated. Reported by Greg Oschwald. GitHub #3.


1.04     2016-06-17

- Replaced List::MoreUtils with List::Util.


1.03     2016-03-25

- Rebuilt all locale data with CLDR 29, released on 2016-03-19.


1.02     2015-12-09

- Make the DateTime::Locale->load method accept a locale in any non-canonical
  casing, such as "en-us". Reported by Shawn Moore. RT #110244.


1.01     2015-11-07

- Prevent CPAN from indexing the tools directory, which is just for the
  author's use.


1.00     2015-11-07

* All of these changes were originally released in previous trial releases,
  but I'm repeating them here for clarity.

[ENHANCEMENTS]

- This release uses the locale data from CLDR version 28. The last major
  update of the locale data used CLDR 1.7.1, released in 2009, so this is a
  big change. Many things have changed in terms of locale data.

- Some locales are no longer available because they are not in the CLDR data.

- The CLDR data no longer includes default date and time format lengths. This
  is now "medium" for every locale, simply to provide some level of backwards
  compatibility.

- Loading DateTime::Locale itself is now quite a bit faster. The whole locale
  registration system has been removed entirely, except for custom
  locales. This fixes RT #78794. Requested by Michael Conrad.

- A long-standing issue with the Austrian locale not using the Austrian name
  for January has been fixed. RT #52337. Reported by Thomas Klausner.

[BACKWARDS INCOMPATIBILITIES]

- This is a big new release, and includes a number of backwards-incompatible
  changes. However, most users should be unaffected by this change. If you
  only use this module via DateTime.pm, you are unlikely to notice any changes
  other than changes to the locale data.

- The old API deprecated since 0.40 has been removed (almost) entirely.

- We now refer to things as "code" in the docs and method names where we used
  to call them ids. This includes locale, language, script, territory, and
  variant codes. This is more in line with the various ISO standards and the
  CLDR packages.

- All the $locale->*_id methods (including $locale->id) are deprecated. Use
  the relevant $locale->*_code method instead.

- The canonical form of the locale codes now uses dashes (-) instead of
  underscores (_). Loading a locale with an underscore in the name
  (e.g. en_US) still works.

- The way that locale data is packaged has changed quite a bit. We no longer
  package each locale in its own class. Instead, all locale data is in a
  single module (mostly in a __DATA__ section) and loaded into memory as
  needed. If you have any code that checks $locale->isa, that code may
  break.

- Locales are no longer subclasses of DateTime::Locale::Base. This module is
  still included in the distribution in case someone has a custom locale that
  inherits from this module. However, this module will go away in a future
  release.

- The "ii-*" aliases for the "he-*" locales have been removed.

- The "no-*" aliases for the "nn-*" locales have been removed.

- The value of $locale->code no longer reflects the value passed to
  DateTime::Locale->load. This only affects aliases and non-canonical forms of
  the code. For example, if you load "en_US" then $locale->code will return
  "en-US". If you load "C" or "POSIX" the returned code will be "en-US-POSIX".

- All of the documentation related to creating aliases and registering custom
  locales has been removed. All of these methods still work, but I don't think
  this system got much use, so I don't want to emphasize it in the docs. (But
  let me know if you are using this and want to see these docs restored).


0.96     2015-10-04 (TRIAL RELEASE)

- Locale data with characters in the 0x80-0xFF range was not marked as UTF-8
  by Perl. This could cause all sorts of weirdness and was generally bad.


0.95     2015-09-30 (TRIAL RELEASE)

- Added .pod files for each locale that document the data for that locale.


0.94     2015-09-30 (TRIAL RELEASE)

- Restored the datetime_format method to individual locale objects for
  backwards compatibility.


0.93     2015-09-28 (TRIAL RELEASE)

- Really release a trial release this time. I'm not kidding. See 0.90 for the
  interesting changes.


0.92     2015-09-27

- I accidentally released 0.90 as a non-trial release. This release is the
  same as 0.46, so that the newest non-trial release does not break the
  DateTime.pm tests.


0.91     2015-09-27

- Released the changes in 0.90 as a trial release.


0.90     2015-09-27

[ENHANCEMENTS]

- Updated based on version 28 of the CLDR data. The last update was based on
  the CLDR 1.7.1 release from 2009, so this is a big change. Many things have
  changed in terms of locale data.

- Some locales are no longer available because they are not in the CLDR data.

- The CLDR data no longer includes default date and time format lengths. This
  is now "medium" for every locale, simply to provide some level of backwards
  compatibility.

- Loading DateTime::Locale itself is now quite a bit faster. The whole locale
  registration system has been removed entirely, except for custom
  locales. This fixes RT #78794. Requested by Michael Conrad.

- A long-standing issue with the Austrian locale not using the Austrian name
  for January has been fixed. RT #52337. Reported by Thomas Klausner.

[BACKWARDS INCOMPATIBILITIES]

- This is a big new release, and includes a number of backwards-incompatible
  changes. However, most users should be unaffected by this change. If you
  only use this module via DateTime.pm, you are unlikely to notice any changes
  other than changes to the locale data.

- The old API deprecated since 0.40 has been removed (almost) entirely.

- We now refer to things as "code" in the docs and method names where we used
  to call them ids. This includes locale, language, script, territory, and
  variant codes. This is more in line with the various ISO standards and the
  CLDR packages.

- All the $locale->*_id methods (including $locale->id) are deprecated. Use
  the relevant $locale->*_code method instead.

- The canonical form of the locale codes now uses dashes (-) instead of
  underscores (_). Loading a locale with an underscore in the name
  (e.g. en_US) still works.

- The way that locale data is packaged has changed quite a bit. We no longer
  package each locale in its own class. Instead, all locale data is in a
  single module (mostly in a __DATA__ section) and loaded into memory as
  needed. If you have any code that checks $locale->isa, that code may
  break.

- Locales are no longer subclasses of DateTime::Locale::Base. However, this
  module is still included in the distribution in case someone has a custom
  locale that inherits from this module. However, this module will go away in
  a future release.

- The "ii-*" aliases for the "he-*" locales have been removed.

- The "no-*" aliases for the "nn-*" locales have been removed.

- The value of $locale->code no longer reflects the value passed to
  DateTime::Locale->load. This only affects aliases and non-canonical forms of
  the code. For example, if you load "en_US" then $locale->code returns
  "en-US". If you load "C" or "POSIX" the code is "en-US-POSIX".

- All of the documentation related to creating aliases and registering custom
  locales has been removed. All of these methods still work, but I don't think
  this system got much use, so I don't want to emphasize it in the docs (but
  let me know if you are using this and want to see these docs restored).


0.46     2015-05-21

- Fixed handling of C locales like "C.UTF-8". Passing these to
  DateTime::Locale->load would cause a warning followed by an exception, but
  all "C" locales should be special-cased as an alias of en-US-POSIX. Reported
  by David Wheeler. RT #104574.


0.45   2010-03-19

- Installing this release will cause older versions of
  DateTime::Format::Strptime to warn like crazy. Please update
  DateTime::Format::Strptime if you install this release.

- This is an interim release still based on CLDR 1.7.1 pending the release of
  Locale::CLDR, which will happen real soon now, for some definition of soon.

- Removed dependency on Class::ISA and just copied what we need from said
  module directly. Class::ISA warns as deprecated if used with Perl 5.11.0,
  even though it works just fine (doh). RT #53940.

- All methods deprecated in the last release now warn when called.

- Added methods to return per-locale strftime formats from the glibc
  data. These methods are not yet documented. They are just there for now to
  allow me to update DateTime::Format::Strptime.


0.44   2009-09-12

- All methods which return strftime-style patterns are officially deprecated
  (and have been a little broken for some time, regardless). This includes all
  date and time format methods ending in "_format".

- Other deprecated methods include:
  date_parts_order, date_before_time
  era, eras
  month_name, month_abbreviation, month_narrow
  month_names, month_abbreviations, month_narrows
  day_name, day_abbreviation, day_narrow
  day_names, day_abbreviations, day_narrows
  quarter_name, quarter_abbreviation, quarter_narrow
  quarter_names, quarter_abbreviations
  am_pm, am_pms
  era_name, era_abbreviation
  era_narrow, era_names, era_abbreviations

- All of these deprecated methods will eventually be removed. If you are using
  them directly, please change your code.

- Converted data files in tools/t/test-data to Unix line endings. This works
  around a bug in Module::Signature. Reported by Zefram. RT #49085.

- Require Params::Validate 0.91, since 0.89 caused test failures for
  someone. Reported by Jeremy Hetzler. RT #41365.

- Moved code to my hg repo at http://hg.urth.org/hg/DateTime-Locale.


0.43   2009-06-30

- Based on CLDR 1.7.1, which includes support for several new
  languages, as well as lots of changes.


0.42   2008-09-12

- Based on CLDR 1.6.1, but this has no changes in the data we use. I
  just used 1.6.1 so people wouldn't ask me why I don't use 1.6.1 ;)

- In the switch to CLDR (back in 0.30), I accidentally dropped a
  number of hard-coded aliases, notably for 'C'. These aliases have
  been restored. Reported by Adam Kennedy. RT #39208.

- Generation of aliases based on the 3-letter ISO code for countries
  is now based on the most recent version of ISO639.


0.41   2008-07-12

- Based on CLDR 1.6

- Added the CLDR version to the catalog and generated files. In the
  future, if you load a locale from an older CLDR version than the
  catalog's version, you will get a warning.


0.4001 2008-05-19

- Minor changes to get test passing under 5.6.x.


0.40   2008-05-18

* Dropped support for Perl 5.005.

- Based on CLDR 1.5.1

- Massive reworking of the locale generation code. We now extract much
  more information from the CLDR files. See the DateTime::Locale and
  DateTime::Locale::Base documentation for details on what is
  available.

- Lots of bug fixes in the data. The old generation code was often
  extracting the draft form of a piece of data as opposed to the
  current final form. There are also many other data fixes from this
  new generation code.

- One of the notable additions is the inclusion of
  $locale->format_for(...) and $locale->available_formats(). This
  gives you access to formatting for various arbitrary patterns like
  "year and month" or "month and day". Requested by Brian Hirt.

- Many of the new features in this release will only be available with
  DateTime.pm 0.43+, since it requires a version of DateTime.pm which
  can handle the CLDR date pattern language.

- All locale files now include POD with examples of the data they
  include.


0.35   2007-09-09

- Based on CLDR 1.5


0.34   2007-03-05

- Removed the use of STORABLE_attach from this module entirely, since
  it seemed to have a buggy interaction with DateTime.pm. See
  http://www.mail-archive.com/datetime@perl.org/msg05633.html for some
  discussion of this.


0.33   2007-01-06

- Based on CLDR 1.4.1.

- Some locales had am/pm names like "HASH(...)" because of a bug in
  the script to generate the locale modules.


0.32   2006-11-20

- A bug in the STORABLE_freeze method in this class caused major test
  failures for DT::Calendar::Chinese, which is used by
  DT::Calendar::Japanese.

- Do better checking of locale names passed to DT::Locale->load(), so
  we catch undef early before it causes a bunch of warnings.


0.3101 2006-10-23

- Fixed a test failure when DateTime::Locale is installed on a system
  where DateTime.pm has never been installed.

- Fixed a test failure in bleadperl. RT Ticket #22515. Reported by
  Steve Peters.


0.31   2006-10-22

- Added era_name() and era_abbreviation() methods for the use of
  DateTime.pm.


0.30   2006-10-22

- Now using the CLDR data instead of ICU. This isn't a big change,
  since the ICU data was derived from the CLDR data anyway.

- Based on CLDR 1.4.

* BACKWARDS INCOMPATIBILITY - Integrated the ISO639-2 aliases into
  DateTime::LocaleCatalog, and removed
  DateTime::Locale::Alias::ISO639_2.

- The data now include both abbreviated and long forms for eras. The
  eras() method continues to return the abbreviated forms, but this is
  deprecated. Use era_abbreviations() or era_names() instead.

- Added a STORABLE_attach method for integration with newer versions
  of Storable which provide better support for singletons.

- The narrow versions of days and months was not available for most
  locales, even though every locale should provide at least the
  default values for these items.


0.22   2005-05-31

- Allow id names passed to load() to contain dashes or underscores, in
  order to support RFC 3066 locale names, which use dashes.

- Fix bugs when a custom locale was registered and a "class" parameter
  was passed to register().  Patch from Yann Kerhervé.

- Switched to a "traditional" Makefile.PL file at Perrin Harkins'
  request.


0.21   2005-02-28

- Fix era() method for year 0.


0.20   2005-02-26

* BACKWARDS INCOMPATIBILITY - The way DateTime::Locale::Base
  subclasses work has changed.  Subclasses should no longer implement
  the date_formats() or time_formats() methods.  Instead, they need to
  provide one method per format length (full_date_format(),
  long_date_format(), etc).

- Uses much newer (August, 2004) data from ICU.  This includes a
  number of new locales.  See DateTime::LocaleCatalog for a list.
  This new data also adds a new type of differentiator for locales,
  the script (Latin vs Cyrillic, for example).

- Added new methods to get the "narrow" forms of a day or month.

- Implemented per-locale eras.

- Fix a number of doc typos and buglets.  Patch by Jean Forget.


0.09   2004-03-09

- Added Storable freeze & thaw hooks.

0.08   2004-02-12

- No code changes, just a Makefile.PL update to work with
  Module::Build 0.23.


0.07   2003-12-14

- If given an id like 'en_US.UTF-8', DateTime::Locale would die with
  the message 'Can't locate object method "_load_from_id" via package
  "DateTime::Locale" at /usr/share/perl5/DateTime/Locale.pm line 220'.
  Reported by Sylvain Daubert.


0.06   2003-12-08

- The DateTime::Locale docs now includes docs for all the methods that
  a locale object has.


0.05   2003-10-03

- Really make the documentation and code match!  This time there are
  even tests for this.  Reported by David Hood (again).

- DateTime::Locale won't try to load a class if it already has a new()
  method.  This is so you can define multiple locale subclasses in one
  file and load that file yourself before calling the load() method.


0.04   2003-10-03

- The documentation incorrectly showed the DateTime::Locale->register
  method as taking an array, rather than an array of hash references.
  Reported by David Hood.


0.03   2003-08-06

- Once a locale is loaded, it is cached in memory, so that locale
  objects are singletons.  Calling methods that change the locale
  registry, like register() or remove_alias(), clear that cache.  This
  should provide a noticeable speed boost when constructing many
  DateTime objects with the same locale.  Based on a patch from John
  Siracusa.


0.02   2003-07-25

- Make sure tests pass without requiring DateTime 0.14 to be
  installed.  Reported by Claus Farber.

- Document default formats and format lengths in
  DateTime::Locale::Base.


0.01   2003-07-23

- Initial release
