Средство форматирования Yii2 relativeTime() не работает на общем хосте

Он работает правильно на локальном сервере, но когда я загружаю его на общий хост, вместо отображения относительной даты отображается необработанная строка.

код:

Yii::$app->formatter->asRelativeTime($timestamp, 'now');

локальный хост:

in 6 days

общий хост:

in {delta, plural, =1{a day} other{# days}}

Локаль установлена, и временная метка передается. Расширение Intl включено. Другие функции форматирования (например, asDate) работают правильно.


person mt.andi    schedule 09.05.2015    source источник
comment
Вы проверили, работает ли intl? Попробуйте один из этих примеров. Зарегистрируйте его или используйте VarDumper.   -  person robsch    schedule 10.05.2015
comment
Да, у меня нет проблем с другими методами форматирования, кроме relativeTime()   -  person mt.andi    schedule 11.05.2015
comment
Ok. Я не знаю проблемы. Однако это или это может помочь. Если вы что-нибудь узнаете, пожалуйста, сообщите нам.   -  person robsch    schedule 11.05.2015


Ответы (2)


Я предполагаю, что это было из-за устаревшей библиотеки ICU расширения PHP intl. У меня была версия 4.2.1, а yii2 требует, по крайней мере, версии ICU 49, чтобы иметь возможность использовать все функции, которые, вероятно, включают asRelativeTime().

Не могу сказать точно, потому что я не могу обновить его на своем хостинг-плане.

person mt.andi    schedule 12.05.2015

in 6 days — это локализованная строка (на английском языке).

in {delta, plural, =1{a day} other{# days}} — это нелокализованный шаблон.

С каждым запросом Yii пытается локализовать шаблон. Если Yii по какой-то причине не может локализовать шаблон, он выведет шаблон.

Так что может быть, файлы локализации отсутствуют: проверьте, содержит ли vendor/yiisoft/yii2/messages папки и файлы для вашего языка. И проверьте, установлено ли для текущей локализации допустимое значение.

Читайте также об интернационализации с Yii2.

person robsch    schedule 10.05.2015
comment
Файлы локализации есть. Они одинаковые на обоих серверах. Значение локали допустимо (en — то же, что и на localhost, и там работает). - person mt.andi; 10.05.2015
comment
@mt.andi Хорошо. И доступны ли они (права доступа к файлам)? Вы вообще пользуетесь локализацией? - person robsch; 10.05.2015
comment
Файлы читаемы, но английским строкам они не нужны. Да, я использую локализацию - asCurrency() корректно переключает числа на арабские. - person mt.andi; 11.05.2015