5071

Почему не работает библиотека Carbon при выводе даты в formatLocalized() на хостинге?

4 ответа

Приветствую!

Задавал этот вопрос на Тостере, но так и не получил ответ, поэтому спрошу ещё раз тут.

Есть проект на Laravel 5.3 с установленным пакетом Carbon и расширением для него – jenssegers/date. Прописываю в методе контроллера (для отображения статьи в блоге) следующее:

use Jenssegers\Date\Date; 

// ... 

setlocale(LC_TIME, 'ru_RU.UTF-8'); // Пробовал любые варианты написания 'ru_RU' Date::setLocale(config('app.locale')); // 'locale' => 'ru'

$article = Article::where('id', '=', $id)->firstOrFail();

$created_at = Date::parse($article->created_at)->formatLocalized('%e %B %Y');

return view('pages.article', compact( 'article', 'created_at' ));

// ...

На локалхосте при php artisan serve (OS X 10.11.6) – всё отображается так, как надо – 10 ноября 2016. Причём, что с библиотекой jenssegers/date, что без неё (просто Carbon-ом).

Загружаю всё это на хостинг (Таймвеб) и вижу вот такой вывод даты: 10 Ноябрь 2016 (месяц с большой буквы и в именительном падеже). Из-за чего это может быть? Как исправить?

Ответы (4)

constb 0
12.11.2016 13:19
разве jenssegers/date использует системную локаль? по-моему у него есть свой метод Date::setLocale и своя локаль ru в которой месяцы со склонениями. в ларавеле он наверное использует ту локаль которая в config/app.php задана или можно вручную вызвать \Lang::setLocale('ru') в AppServiceProvider.php
Свернуть ответы
Vikky Shostak 0
12.11.2016 15:34
Там в моём куске кода эта строчка (почему-то) уехала к предыдущей. Иными словами, ни Date::setLocale('ru'), ни \Lang::setLocale('ru'), ни даже Carbon::setLocale('ru') – ситуацию не исправили.

Неясным, для меня, является факт того, что на локалке (OS X 10.11.6, PHP 7) и OpenServer 5.2.5 (Win10x64, PHP 5.6\7) – отображается всё так, как в jenssegers/date (месяц с маленькой буквы, родительный падеж), а на Таймвебе (шаред, на сервере kimmy) – совсем мимо Date и Carbon (месяц с большой буквы, в именительном падеже).

Гуглил проблему, но у рунете ничего подобного не нашёл, а у англичан нет подобных языковых проблем (счастливые...).
Vikky Shostak 0
12.11.2016 21:28
Обратился в ТП. Лучше бы не обращался, толку ноль.

Сказали: «Да, действительно, сейчас настройки хостинга таковы, что дата выводится именно таким образом. К сожалению, в рамках виртуального хостинга эту настройку изменить не представляется возможным.»

Говорю им: «Возможно ли перенести мой аккаунт на сервер, где это пофиксено? Просто, скорее всего из-за этого, не работает Carbon и jenssegers/date (соответственно).»

Отвечают: «Укажите, пожалуйста, список требований к серверу для корректного выполнения указанных Вами модулей. В противном случае, обратитесь, пожалуйста, к документации или службе поддержки используемого ПО для получения дополнительной информации.»

Короче, воз и ныне там. Буду искать другой сервер (путём регистрации на пробные 10 дней), чего ж делать остаётся.
Свернуть ответы
constb 0
14.11.2016 06:23
нет, jenssegers/date не должен форматировать дату таким образом сам по себе. что-то не так залито, не так настроено. "10 Ноябрь 2016" - так форматирует пхпшная стандартная функция strftime с русской локалью. такое впечатление что jenssegers не может найти свою локаль и использует дефолтную.

Похожие вопросы

Отсутствует настройка смены php с 7.2 на 7.3 и 7.4

Всем доброго времени суток, хотел сменить у сайта php 7.2 на 7.4, но к сожалению такой фичи в акке моем нет, на другом акке новом есть. Что посоветуете, перенос с акка на акк не рассматриваю. спасибо
Олег Ерилов
267

Мигает сайт с js кодом

Как решить проблему с миганием? Когда обновляю страницу сайта или перехожу по ссылке из меню начинают мигать на доли секунды: Блоки, формы, таблицы, иконки, картинки, текст и.т.д... Это связано с js кодом когда его убираю то все нормально без миганий....
С помощью соцсетей
У меня нет аккаунта Зарегистрироваться
Нажимая кнопку «Зарегистрироваться», я даю согласие на обработку своих персональных данных, указанных в форме регистрации.
С помощью соцсетей
У меня уже есть аккаунт Войти
Нажимая кнопку «Зарегистрироваться», я даю согласие на обработку своих персональных данных, указанных в форме регистрации.
Инструкции по восстановлению пароля высланы на Ваш адрес электронной почты.
Пожалуйста, укажите email, который Вы использовали для входа на сайт.