5356

Почему не работает библиотека 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 не может найти свою локаль и использует дефолтную.

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

Павел Яковлев
925

Не создается папка storage (Laravel)

Тестил сайт где-то месяц назад и при написании "php artisan storage:link" создавалась папка storage, а сейчас создается только какой-то файл с именем "storage". Если кто сталкивался с таким помогите :)
Amira Rossow
639

Can I change the default version of php in console?

Hello Everyone, I'm goining to give you an example in way " in my composer dependencies, I need a php version of at least 7.3. " And because of this I can not execute `composer install`, because php version in console 7.1. Although...
Кирилл
460

Сохранение файлов сессий пользователей в папке выше, но для текущего домена

Здравствуйте! Пытаюсь изменить путь к сессиям пользователей через php.ini, но получается только изменить путь session.save_path для Master Value файла phpinfo(), а Local Value (куда в реальности заносятся файлы сессий) не меняется. Я пробовал делать...
С помощью соцсетей
У меня нет аккаунта Зарегистрироваться
Нажимая кнопку «Зарегистрироваться», я даю согласие на обработку своих персональных данных, указанных в форме регистрации.
С помощью соцсетей
У меня уже есть аккаунт Войти
Нажимая кнопку «Зарегистрироваться», я даю согласие на обработку своих персональных данных, указанных в форме регистрации.
Инструкции по восстановлению пароля высланы на Ваш адрес электронной почты.
Пожалуйста, укажите email вашего аккаунта