# alias to go through.
my $data_id = $id;
while ( exists $AliasToID{$data_id} && ! exists $DataForID{$data_id} )
{
$data_id = $AliasToID{$data_id};
}
my $data = $DataForID{$data_id};
my $subclass = $data->{real_class} ? $data->{real_class} : $data_id;
$real_class ||= "DateTime::Locale::$subclass";
unless ( $real_class->can('new') )
{
eval "require $real_class";
die $@ if $@;
}
return $real_class->new( %$data,
id => $id,
);
}
1;
__END__
=head1 NAME
DateTime::Locale - Localization support for DateTime.pm
=head1 SYNOPSIS
use DateTime::Locale;
my $loc = DateTime::Locale->load('en_GB');
print $loc->native_locale_name, "\n",
$loc->long_datetime_format, "\n";
# but mostly just things like ...
my $dt = DateTime->now( locale => 'fr' );
print "Aujourd'hui le mois est " . $dt->month_name, "\n":
=head1 DESCRIPTION
DateTime::Locale is primarily a factory for the various locale
subclasses. It also provides some functions for getting information
on available locales.
If you want to know what methods are available for locale objects,
then please read the C<DateTime::Locale::Base> documentation.
=head1 USAGE
This module provides the following class methods:
=over 4
=item * load( $locale_id | $locale_name | $alias )
Returns the locale object for the specified locale id, name, or alias
- see the C<DateTime::LocaleCatalog> documentation for a list of built
in names and ids. The name provided may be either the English or
native name.
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 locale C<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 locale C<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.
Please note that if you provide an B<id> to this method, then the
returned locale object's C<id()> method will B<always> return the
value you gave, even if that value was an alias to some other id.
=4= |