CalendarLocale
in package
Локализация календаря на шести языках (ru, en, de, fr, es, it) для {@see CalendarDate}: названия месяцев и дней недели плюс согласование единиц с числительными для человекочитаемой разницы ({@see CalendarDate::diffForHumans()}).
Счётные формы («5 дней», «2 года») строит Inflector из экосистемы CloudCastle — он корректно различает три славянские формы русского (1 день / 2 дня / 5 дней, с учётом 11 и 21) и множественное число германо-романских языков. Итальянский инфлектор пока не покрывает — для него применяется встроенная пара форм. Тяжёлые ICU-локали/ext-intl не подключаются.
Table of Contents
Constants
- LOCALES : array<int, non-empty-string> = ['ru', 'en', 'de', 'fr', 'es', 'it']
- Поддерживаемые языки локализации.
Methods
- assertLocale() : non-empty-string
- Проверка и нормализация кода языка.
- monthName() : string
- Название месяца.
- unit() : non-empty-string
- Число с согласованной единицей: «5 дней», «2 года», «1 Tag».
- weekdayName() : string
- Название дня недели.
- wrap() : non-empty-string
- Обернуть фразу разницы в прошлое/будущее: «5 дней назад», «in 2 hours».
Constants
LOCALES
Поддерживаемые языки локализации.
public
array<int, non-empty-string>
LOCALES
= ['ru', 'en', 'de', 'fr', 'es', 'it']
Methods
assertLocale()
Проверка и нормализация кода языка.
public
static assertLocale(string $locale) : non-empty-string
Parameters
- $locale : string
-
код языка
Tags
Return values
non-empty-string —поддерживаемый код в нижнем регистре
monthName()
Название месяца.
public
static monthName(int $month, string $locale[, bool $short = false ]) : string
Parameters
- $month : int
-
номер месяца 1–12
- $locale : string
-
код языка
- $short : bool = false
-
короткая форма (первые 3 символа полного названия)
Tags
Return values
string —локализованное название месяца
unit()
Число с согласованной единицей: «5 дней», «2 года», «1 Tag».
public
static unit(int $count, non-empty-string $unit, non-empty-string $locale[, bool $governed = true ]) : non-empty-string
Русские и германо-романские формы строит инфлектор CloudCastle; итальянский — встроенной парой форм.
Parameters
- $count : int
-
количество (учитывается модуль)
- $unit : non-empty-string
-
ключ единицы (y/m/w/d/h/i/s)
- $locale : non-empty-string
-
поддерживаемый код языка
- $governed : bool = true
-
фраза управляется предлогом «через/назад», «vor/in»;
false— самостоятельная фраза в именительном падеже
Return values
non-empty-string —число с единицей в нужной форме
weekdayName()
Название дня недели.
public
static weekdayName(int $weekday, string $locale[, bool $short = false ]) : string
Parameters
- $weekday : int
-
день недели 0=воскресенье … 6=суббота
- $locale : string
-
код языка
- $short : bool = false
-
короткая форма (первые 3 символа полного названия)
Tags
Return values
string —локализованное название дня недели
wrap()
Обернуть фразу разницы в прошлое/будущее: «5 дней назад», «in 2 hours».
public
static wrap(non-empty-string $phrase, bool $future, non-empty-string $locale) : non-empty-string
Parameters
- $phrase : non-empty-string
-
готовая фраза единицы
- $future : bool
-
момент в будущем
- $locale : non-empty-string
-
поддерживаемый код языка
Return values
non-empty-string —обёрнутая человекочитаемая разница