Formatter
in package
implements
FormatterInterface
Локализованное форматирование величин: числовые соглашения локали, локализованные символы и плюрализованные имена единиц на 6 языках.
Данные локали отсутствуют или не содержат единицу — фолбэк на международный символ: форматирование никогда не падает из-за пробела в переводах.
Table of Contents
Interfaces
- FormatterInterface
- Локализованное форматирование величин.
Constants
- SYMBOL : mixed = 0
- Позиция локализованного символа в записи данных локали.
Properties
- $localePath : string|null
-
$locales
: array<string, array{decimal: string, plural: string, units: array
>}>
Methods
- __construct() : mixed
- format() : string
- Форматирует величину по соглашениям локали.
- unitName() : string
- Локализованное имя единицы, согласованное с числом; фолбэк — символ.
- unitSymbol() : string
- Локализованный символ единицы; фолбэк — международный символ.
- formatNumber() : string
- Форматирует число с десятичным разделителем локали.
-
localeData()
: array{decimal: string, plural: string, units: array
>} - Данные локали с ленивой загрузкой; неизвестная локаль — пустой фолбэк.
-
parseLocale()
: array{decimal: string, plural: string, units: array
>} - Валидирует сырые данные локали, отбрасывая нестроковые элементы.
- pluralIndex() : int
- Индекс формы множественного числа по правилам локали.
- russianPluralIndex() : int
- Русская плюрализация: 1 километр / 2 километра / 5 километров; дробные значения — форма родительного падежа (1,5 километра).
- stringForms() : array<int, string>
- Отбирает строковые формы записи единицы.
- stringOr() : string
- Строковое поле сырого массива или значение по умолчанию.
Constants
SYMBOL
Позиция локализованного символа в записи данных локали.
private
mixed
SYMBOL
= 0
Properties
$localePath read-only
private
string|null
$localePath
= null
$locales
private
array<string, array{decimal: string, plural: string, units: array>}>
$locales
= []
Methods
__construct()
public
__construct([null|string $localePath = null ]) : mixed
Parameters
- $localePath : null|string = null
-
каталог данных локалей; null — встроенный
format()
Форматирует величину по соглашениям локали.
public
format(Quantity $quantity[, int|null $precision = null ][, string $locale = 'ru' ][, bool $long = false ]) : string
Parameters
- $quantity : Quantity
- $precision : int|null = null
-
знаков после запятой; null — без округления
- $locale : string = 'ru'
-
код локали («ru», «en», «de», «fr», «es», «it»)
- $long : bool = false
Attributes
- #[Override]
Return values
stringunitName()
Локализованное имя единицы, согласованное с числом; фолбэк — символ.
public
unitName(Unit $unit, float $count[, string $locale = 'ru' ]) : string
Parameters
- $unit : Unit
- $count : float
- $locale : string = 'ru'
Attributes
- #[Override]
Return values
stringunitSymbol()
Локализованный символ единицы; фолбэк — международный символ.
public
unitSymbol(Unit $unit[, string $locale = 'ru' ]) : string
Parameters
- $unit : Unit
- $locale : string = 'ru'
Attributes
- #[Override]
Return values
stringformatNumber()
Форматирует число с десятичным разделителем локали.
private
formatNumber(float $value, int|null $precision, string $decimal) : string
Parameters
- $value : float
- $precision : int|null
- $decimal : string
Return values
stringlocaleData()
Данные локали с ленивой загрузкой; неизвестная локаль — пустой фолбэк.
private
localeData(string $locale) : array{decimal: string, plural: string, units: array>}
Parameters
- $locale : string
Return values
array{decimal: string, plural: string, units: arrayparseLocale()
Валидирует сырые данные локали, отбрасывая нестроковые элементы.
private
parseLocale(array<string|int, mixed> $raw) : array{decimal: string, plural: string, units: array>}
Parameters
- $raw : array<string|int, mixed>
Return values
array{decimal: string, plural: string, units: arraypluralIndex()
Индекс формы множественного числа по правилам локали.
private
pluralIndex(string $rule, float $count, int $formsCount) : int
Правила: «ru» — one/few/many (дробные — few); «fr» — one при |n| < 2; остальные — one/other.
Parameters
- $rule : string
- $count : float
- $formsCount : int
Return values
intrussianPluralIndex()
Русская плюрализация: 1 километр / 2 километра / 5 километров; дробные значения — форма родительного падежа (1,5 километра).
private
russianPluralIndex(float $abs, bool $isInteger) : int
Parameters
- $abs : float
- $isInteger : bool
Return values
intstringForms()
Отбирает строковые формы записи единицы.
private
stringForms(array<string|int, mixed> $forms) : array<int, string>
Parameters
- $forms : array<string|int, mixed>
Return values
array<int, string>stringOr()
Строковое поле сырого массива или значение по умолчанию.
private
stringOr(array<string|int, mixed> $raw, string $key, string $default) : string
Parameters
- $raw : array<string|int, mixed>
- $key : string
- $default : string