ICanBoogie/CLDR v1.6.0
  • Namespace
  • Class

Namespaces

  • ICanBoogie
    • CLDR

Classes

  • Calendar
  • CalendarCollection
  • ContextTransforms
  • Currency
  • CurrencyCollection
  • CurrencyFormatter
  • DateFormatter
  • DateTimeFormatter
  • FileProvider
  • ListFormatter
  • Locale
  • LocaleCollection
  • LocalizedCurrency
  • LocalizedDateTime
  • LocalizedListFormatter
  • LocalizedLocale
  • LocalizedNumberFormatter
  • LocalizedObject
  • LocalizedObjectWithFormatter
  • LocalizedTerritory
  • NumberFormatter
  • NumberPattern
  • NumberPatternParser
  • Numbers
  • ProviderCollection
  • RedisProvider
  • Repository
  • RunTimeProvider
  • Supplemental
  • Territory
  • TerritoryCollection
  • TimeFormatter
  • WebProvider

Interfaces

  • Exception
  • Formatter
  • LocalizeAwareInterface
  • Provider

Traits

  • CodePropertyTrait
  • CollectionTrait
  • LocalePropertyTrait
  • ProviderStorageBinding
  • RepositoryPropertyTrait

Exceptions

  • ResourceNotFound
  • TerritoryNotDefined
  1   2   3   4   5   6   7   8   9  10  11  12  13  14  15  16  17  18  19  20  21  22  23  24  25  26  27  28  29  30  31  32  33  34  35  36  37  38  39  40  41  42  43  44  45  46  47  48  49  50  51  52  53  54  55  56  57  58  59  60  61  62  63  64  65  66  67  68  69  70  71  72  73  74  75  76  77  78  79  80  81  82  83  84  85  86  87  88  89  90  91  92  93  94  95  96  97  98  99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 
<?php

/*
 * This file is part of the ICanBoogie package.
 *
 * (c) Olivier Laviale <olivier.laviale@gmail.com>
 *
 * For the full copyright and license information, please view the LICENSE
 * file that was distributed with this source code.
 */

namespace ICanBoogie\CLDR;

/**
 * Localized currency.
 *
 * @property-read Currency $target
 * @property-read string $name The localized name of the currency.
 * @property-read string $symbol The localized symbol of the currency.
 * @property-read CurrencyFormatter $formatter
 */
class LocalizedCurrency extends LocalizedObjectWithFormatter
{
    const PATTERN_STANDARD = 'standard';
    const PATTERN_ACCOUNTING = 'accounting';

    /**
     * Returns the formatter to use to format the target object.
     *
     * @return CurrencyFormatter
     */
    protected function lazy_get_formatter()
    {
        return new CurrencyFormatter($this->locale->repository);
    }

    /**
     * Returns the localized name of the currency.
     *
     * @param int|null $count Used for pluralization.
     *
     * @return string
     */
    public function get_name($count = null)
    {
        $offset = 'displayName';

        if ($count == 1)
        {
            $offset .= '-count-one';
        }
        else if ($count)
        {
            $offset .= '-count-other';
        }

        return $this->locale['currencies'][$this->target->code][$offset];
    }

    /**
     * @var string
     */
    private $_symbol;

    /**
     * Returns the localized symbol of the currency.
     *
     * @return string
     */
    protected function get_symbol()
    {
        if ($this->_symbol)
        {
            return $this->_symbol;
        }

        return $this->_symbol = $this->locale['currencies'][$this->target->code]['symbol'];
    }

    /**
     * Formats currency using localized conventions.
     *
     * @param number $number
     * @param string $pattern
     * @param array $symbols
     *
     * @return string
     */
    public function format($number, $pattern = self::PATTERN_STANDARD, array $symbols = [])
    {
        $symbols += $this->locale->numbers->symbols + [

            'currencySymbol' => $this->symbol

        ];

        return $this->formatter->format($number, $this->resolve_pattern($pattern), $symbols);
    }

    /**
     * Resolves a pattern.
     *
     * The special patterns {@link PATTERN_STANDARD} and {@link PATTERN_ACCOUNTING} are resolved
     * from the currency formats.
     *
     * @param string $pattern
     *
     * @return string
     */
    protected function resolve_pattern($pattern)
    {
        switch ($pattern)
        {
            case self::PATTERN_STANDARD:

                return $this->locale->numbers->currency_formats['standard'];

            case self::PATTERN_ACCOUNTING:

                return $this->locale->numbers->currency_formats['accounting'];
        }

        return $pattern;
    }
}
ICanBoogie/CLDR v1.6.0 API documentation generated by ApiGen