Даты, специфичные для локали, представляют интересную проблему. Нам нужно не только указать соответствующий перевод (например: September
=> septembre
), но и убедиться, что формат находится в правильном порядке (например: September 15, 2018
=> 15 septembre 2018
)
Функция даты в PHP date()
только на английском языке, поэтому ее можно сразу игнорировать.
Вместо этого мое «исследование» указало мне на strftime()
. Я подготовил следующий код: echo strftime('%b %e, %Y',strtotime($date));
Это выводит: May 1, 2018
и mai 1, 2018
. Похоже, это решило проблему, пока наши двуязычные тестеры не определили, что дни должны быть отформатированы 1 мая 2018 года.
Какой лучший способ справиться с этим, это статический класс? Я хочу подготовить наше решение в соответствии с лучшими практиками, но я не нашел ответа.
class LocaleDate
{
public static function date($date)
{
$locale = setlocale(LC_ALL, 0);
if ($locale == "fr_CA" || $locale == "fr_CA.UTF-8") {
return strftime('%e %b %Y',strtotime($date));
} else {
return strftime('%b %e, %Y',strtotime($date));
}
}
}
echo LocaleDate::date($date)
Это лучший способ решить эту проблему? Нужно идентифицировать локаль и выводить оттуда? Кажется утомительным, если вам приходится иметь дело с несколькими языками.