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. Addresse 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