@denism300

Как победить ошибку в MODx Could not set the locale?

Как избавиться от ошибки
Could not set the locale. Please check if the locale ru_RU.UTF-8​ exists on your system

в системных настройках локаль прописана ru_RU.UTF-8
  • Вопрос задан
  • 323 просмотра
Решения вопроса 1
webrevenue
@webrevenue
Веб-дизайнер и SEO оптимизатор
Посмотрел свои сайты - те которые на обычном виртуальном хостинге - там все норма. Те которые на VPS там также сыпется. Причина возникновения ошибки и способ решения:
На сервере, стояла локаль en_US.UTF-8 UTF-8
Прописал в настойках modx locale en_US.UTF-8 и ошибка ушла
Что бы использовать ru_RU.UTF-8
Сгенерировал две локали на сервере
root@localhost:~# cat /etc/locale.gen | grep -v '#'
en_US.UTF-8 UTF-8
ru_RU.UTF-8 UTF-8
При этом кириллическую локаль поставил основной, и все гуд.
проверить можно так
root@localhost:~# echo $LANG

Если без перенастроек сервера, то ставите локаль en_US.UTF-8, а для вывода дат на русском используете сниппет:
[[+publishedon:dateRU]]

Сам код сниппета dateRU:

<?php
$month_arr = array(
    '01' => 'Января',
    '02' => 'Февраля',
    '03' => 'Марта',
    '04' => 'Апреля',
    '05' => 'Мая',
    '06' => 'Июня',
    '07' => 'Июля',
    '08' => 'Августа',
    '09' => 'Сентября',
    '10' => 'Октября',
    '11' => 'Ноября',
    '12' => 'Декабря'
);

$d = $input;
$month = strftime("%m",$d);
$year = strftime("%Y",$d);
$day = strftime("%d",$d);
$month = $month_arr[$month];

return "$day $month $year";
?>


Если же после форматирования вместо русского формата даты выводится английская, то создайте сниппет setLocale и вставьте код:

<?php
setlocale(LC_ALL, "ru_RU.UTF-8");
?>


После вставьте этот сниппет в начало шаблона, где нужно выводить форматирование даты. Если русская дата отображается вопросиками, проверьте кодировку сайта, должна быть такой же как и в базе (желательно использовать UTF-8).
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы