NAME

   CLDR::Number - Localized number formatters using the Unicode CLDR

VERSION

   This document describes CLDR::Number v0.11, built with Unicode CLDR
   v27.0.1.

SYNOPSIS

       use CLDR::Number;

       # new oject with 'es' (Spanish) locale
       $cldr = CLDR::Number->new(locale => 'es');

       # decimals
       $decf = $cldr->decimal_formatter;

       # when locale is 'es' (Spanish)
       say $decf->format(1234.5);  # '1.234,5'

       # when locale is 'es-MX' (Mexican Spanish)
       say $decf->format(1234.5);  # '1,234.5'

       # when locale is 'ar' (Arabic)
       say $decf->format(1234.5);  # '١٬٢٣٤٫٥'

       # percents
       $perf = $cldr->percent_formatter;

       # when locale is 'tr' (Turkish)
       say $perf->format(0.05);  # '%5'

       # currencies
       $curf = $cldr->currency_formatter(currency_code => 'USD');

       # when locale is 'en' (English) and currency is USD (US dollars)
       say $curf->format(9.99);  # '$9.99'

       # when locale is 'en-CA' (Canadian English) and currency is USD
       say $curf->format(9.99);  # 'US$9.99'

       # when locale is 'fr-CA' (Canadian French) and currency is USD
       say $curf->format(9.99);  # '9,99 $ US'

DEPRECATION

   Using the locale method as a setter is deprecated. In the future the
   object’s locale will become immutable. Please see issue #38
   <https://github.com/patch/cldr-number-pm5/issues/38> for details and to
   submit comments or concerns.

DESCRIPTION

   Software localization includes much more than just translations.
   Numbers, prices, and even percents should all be localized based on the
   user’s language, script, and region. Fortunately, the Unicode Common
   Locale Data Repository (CLDR) provides locale data and specifications
   for formatting numeric data to use with many of the world’s locales.

   This class provides common attributes shared among the supported
   formatter classes as well as methods to instantiate decimal, percent,
   and currency formatter objects. The value for any attribute (such as
   locale or decimal_sign) will be passed to the formatter objects on
   instantiation but can be overwritten by manually passing another value
   for the attribute or calling a setter method on the formatter object.

Methods

   decimal_formatter

     Returns a decimal formatter, which is a CLDR::Number::Format::Decimal
     object instantiated with all of the attributes from your CLDR::Number
     object as well as any attributes passed to this method.

   percent_formatter

     Returns a percent formatter, which is a CLDR::Number::Format::Percent
     object instantiated with all of the attributes from your CLDR::Number
     object as well as any attributes passed to this method.

   currency_formatter

     Returns a currency formatter, which is a
     CLDR::Number::Format::Currency object instantiated with all of the
     attributes from your CLDR::Number object as well as any attributes
     passed to this method.

Common Attributes

   These are common attributes among this class and all formatter classes.
   All attributes other than locale, default_locale, and cldr_version have
   defaults that change depending on the current locale. All string
   attributes are expected to be character strings, not byte strings.

   locale

     Default: value of default_locale attribute if it exists, otherwise
     root

     Valid: Unicode locale identifiers

     Examples: es (Spanish), es-ES (European Spanish), es-419 (Latin
     American Spanish), zh-Hant (Traditional Chinese), zh-Hans (Simplified
     Chinese), chr (Cherokee)

     The locale is case-insensitive and can use either - (hyphen-minus) or
     _ (low line) as a separator.

   default_locale

     Default: none

     Valid: Unicode locale identifiers

     Use this if you want a locale other than the generic root if the
     locale attribute is not set or not valid.

   numbering_system

     Valid: currently only decimal numbering systems are supported

     Examples: latn (Western Digits), arab (Arabic-Indic Digits), hanidec
     (Chinese Decimal Numerals), fullwide (Full Width Digits)

     In the future, algorithmic numbering systems like hant (Traditional
     Chinese Numerals), hebr (Hebrew Numerals), and roman (Roman Numerals)
     will be supported.

     The numbering system may alternately be provided as a Unicode locale
     extension subtag. For example, locale ja-u-nu-fullwide for the
     Japanese language (ja) with the numbering system (nu) set to Full
     Width Digits (fullwide).

   decimal_sign

     Examples: . (full stop) for root, en; , (comma) for de, fr

   group_sign

     Examples: , (comma) for root, en; . (full stop) for de;   (no-break
     space) for fr

   plus_sign

     Examples: + (plus sign) for root, en, and most locales

   minus_sign

     Examples: - (hyphen-minus) for root, en, and most locales

   cldr_version

     Value: 27.0.1

     This is a read-only attribute that will always reflect the currently
     supported Unicode CLDR version.

NOTES

   The Unicode private-use characters U+F8F0 through U+F8F4 are used
   internally and are therefore not supported in custom patterns and
   signs.

SEE ALSO

     * CLDR::Number::FAQ

     * CLDR::Number::TODO

     * Unicode beyond just characters: Localization with the CLDR
     <http://patch.codes/talks/localization-with-the-unicode-cldr/> (video
     and slides)

     * Perl Advent Calendar: CLDR TL;DR
     <http://perladvent.org/2014/2014-12-23.html>

     * UTS #35: Unicode LDML, Part 3: Numbers
     <http://www.unicode.org/reports/tr35/tr35-numbers.html>

     * CLDR Translation Guidelines: Number Patterns
     <http://cldr.unicode.org/translation/number-patterns>

     * CLDR Translation Guidelines: Number Symbols
     <http://cldr.unicode.org/translation/number-symbols>

AUTHOR

   Nova Patch <[email protected]>

   This project is brought to you by Shutterstock
   <http://www.shutterstock.com/>. Additional open source projects from
   Shutterstock can be found at code.shutterstock.com
   <http://code.shutterstock.com/>.

COPYRIGHT AND LICENSE

   © 2013–2015 Shutterstock, Inc.

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

   Unicode is a registered trademark of Unicode, Inc., in the United
   States and other countries.