use DateTime::Locale; my $loc = DateTime::Locale->load('en-GB'); print $loc->native_name, "\n", $loc->datetime_format_long, "\n"; # but mostly just things like ... my $dt = DateTime->now( locale => 'fr' ); print "Aujourd'hui le mois est " . $dt->month_name, "\n";
If you want to know what methods are available for locale objects, then please read the "DateTime::Locale::FromData" documentation.
If the requested locale is not found, a fallback search takes place to find a suitable replacement.
The fallback search order is:
{language}-{script}-{territory} {language}-{script} {language}-{territory}-{variant} {language}-{territory} {language}
Eg. For the locale code "es-XX-UNKNOWN" the fallback search would be:
es-XX-UNKNOWN # Fails - no such locale es-XX # Fails - no such locale es # Found - the es locale is returned as the # closest match to the requested id
Eg. For the locale code "es-Latn-XX" the fallback search would be:
es-Latn-XX # Fails - no such locale es-Latn # Fails - no such locale es-XX # Fails - no such locale es # Found - the es locale is returned as the # closest match to the requested id
If no suitable replacement is found, then an exception is thrown.
The loaded locale is cached, so that locale objects may be singletons. Calling "DateTime::Locale->register_from_data", "DateTime::Locale->add_aliases", or "DateTime::Locale->remove_alias" clears the cache.
my @codes = DateTime::Locale->codes; my $codes = DateTime::Locale->codes;
Returns an unsorted list of the available locale codes, or an array reference if called in a scalar context. This list does not include aliases.
my @names = DateTime::Locale->names; my $names = DateTime::Locale->names;
Returns an unsorted list of the available locale names in English, or an array reference if called in a scalar context.
my @names = DateTime::Locale->native_names; my $names = DateTime::Locale->native_names;
Returns an unsorted list of the available locale names in their native language, or an array reference if called in a scalar context. All native names use UTF-8 as appropriate.
If you just want to make some small changes on top of an existing locale you can get that locale's data by calling "$locale->locale_data".
Here is an example of making a custom locale based off of "en-US":
my $locale = DateTime::Locale->load('en-US'); my %data = $locale->locale_data; $data{code} = 'en-US-CUSTOM'; $data{time_format_medium} = 'HH:mm:ss'; DateTime::Locale->register_from_data(%data); # Prints 18:24:38 say DateTime->now( locale => 'en-US-CUSTOM' )->strftime('%X'); # Prints 6:24:38 PM say DateTime->now( locale => 'en-US' )->strftime('%X');
The keys that should be present in the hash are the same as the accessor methods provided by DateTime::Locale::FromData, except for the following:
When reporting errors in data, please check the primary data sources first, then where necessary report errors directly to the primary source via the CLDR bug report system. See http://unicode.org/cldr/filing_bug_reports.html for details.
Once these errors have been confirmed, please forward the error report and corrections to the DateTime mailing list, datetime@perl.org.
datetime@perl.org mailing list
There is a mailing list available for users of this distribution, <mailto:datetime@perl.org>.
I am also usually active on IRC as 'autarch' on "irc://irc.perl.org".
Please note that I am not suggesting that you must do this in order for me to continue working on this particular software. I will continue to do so, inasmuch as I have in the past, for as long as it interests me.
Similarly, a donation made in this way will probably not make me work on this software much more, unless I get so many donations that I can consider working on free software full time (let's all have a chuckle at that together).
To donate, log into PayPal and send money to autarch@urth.org, or use the button at <https://www.urth.org/fs-donation.html>.
This is free software; you can redistribute it and/or modify it under the same terms as the Perl 5 programming language system itself.
The full text of the license can be found in the LICENSE file included with this distribution.