DateTime::Locale::FromData(3) Class for locale objects instantiated from pre-defined data


version 1.05


my $locale = DateTime::Locale::FromData->new(%lots_of_data)


This class is used to represent locales instantiated from the data in the DateTime::Locale::Data module.


This class provides the following methods:
  • $locale->code

    The complete locale id, something like ``en-US''.

  • $locale->language_code

    The language portion of the code, like ``en''.

  • $locale->script_code

    The script portion of the code, like ``Hant''.

  • $locale->territory_code

    The territory portion of the code, like ``US''.

  • $locale->variant_code

    The variant portion of the code, like ``POSIX''.

  • $locale->name

    The locale's complete name, which always includes at least a language component, plus optional territory and variant components. Something like ``English United States''. The value returned will always be in English.

  • $locale->language
  • $locale->script
  • $locale->territory
  • $locale->variant

    The relevant component from the locale's complete name, like ``English'' or ``United States''.

  • $locale->native_name

    The locale's complete name in localized form as a UTF-8 string.

  • $locale->native_language
  • $locale->native_script
  • $locale->native_territory
  • $locale->native_variant

    The relevant component from the locale's complete native name as a UTF-8 string.

The following methods all return an array reference containing the specified data.

The methods with ``format'' in the name should return strings that can be used a part of a string, like ``the month of July''. The stand alone values are for use in things like calendars as opposed to a sentence.

The narrow forms may not be unique (for example, in the day column heading for a calendar it's okay to have ``T'' for both Tuesday and Thursday).

The wide name should always be the full name of thing in question. The narrow name should be just one or two characters.

  • $locale->month_format_wide
  • $locale->month_format_abbreviated
  • $locale->month_format_narrow
  • $locale->month_stand_alone_wide
  • $locale->month_stand_alone_abbreviated
  • $locale->month_stand_alone_narrow
  • $locale->day_format_wide
  • $locale->day_format_abbreviated
  • $locale->day_format_narrow
  • $locale->day_stand_alone_wide
  • $locale->day_stand_alone_abbreviated
  • $locale->day_stand_alone_narrow
  • $locale->quarter_format_wide
  • $locale->quarter_format_abbreviated
  • $locale->quarter_format_narrow
  • $locale->quarter_stand_alone_wide
  • $locale->quarter_stand_alone_abbreviated
  • $locale->quarter_stand_alone_narrow
  • $locale->am_pm_abbreviated
  • $locale->era_wide
  • $locale->era_abbreviated
  • $locale->era_narrow

The following methods return strings appropriate for the "DateTime->format_cldr" method:

  • $locale->date_format_full
  • $locale->date_format_long
  • $locale->date_format_medium
  • $locale->date_format_short
  • $locale->time_format_full
  • $locale->time_format_long
  • $locale->time_format_medium
  • $locale->time_format_short
  • $locale->datetime_format_full
  • $locale->datetime_format_long
  • $locale->datetime_format_medium
  • $locale->datetime_format_short

A locale may also offer one or more formats for displaying part of a datetime, such as the year and month, or hour and minute.

  • $locale->format_for($name)

    These are accessed by passing a name to "$locale->format_for(...)", where the name is a CLDR-style format specifier.

    The return value is a string suitable for passing to "$dt->format_cldr", so you can do something like this:

      print $dt->format_cldr( $dt->locale->format_for('MMMdd') )

    which for the ``en'' locale would print out something like ``08 Jul''.

    Note that the localization may also include additional text specific to the locale. For example, the ``MMMMd'' format for the ``zh'' locale includes the Chinese characters for ``day'' (日) and month (月), so you get something like ``8月23日''.

  • $locale->available_formats

    This should return a list of all the format names that could be passed to "$locale->format_for".

There are also some miscellaneous methods:

  • $locale->prefers_24_hour_time

    Returns a boolean indicating whether or not the locale prefers 24-hour time.

  • $locale->first_day_of_week

    Returns a number from 1 to 7 indicating the local first day of the week, with Monday being 1 and Sunday being 7.

  • $locale->version

    The CLDR version from which this locale was generated.


Bugs may be submitted through the RT bug tracker <> (or [email protected] <mailto:[email protected]>).

There is a mailing list available for users of this distribution, <mailto:[email protected]>.

I am also usually active on IRC as 'drolsky' on "irc://".


Dave Rolsky <[email protected]>


This software is copyright (c) 2016 by Dave Rolsky.

This is free software; you can redistribute it and/or modify it under the same terms as the Perl 5 programming language system itself.