PHP setlocale не работает даже с существующими локалями
проблема решена (см. ниже)
я сгенерировал локали на своем сервере, я подтвердил, что они существуют (моя локаль-a указана ниже), но когда я использую:
setlocale(LC_TIME,'fr_FR');
or setlocale(LC_TIME,'fr_FR.utf8');
это не работает вообще.
пример:
<?php
setlocale(LC_TIME,'fr_FR.utf8');
echo 'locale - '.setlocale(LC_TIME,'0');
echo ' : month - '.strftime('%B');
echo '<br />';
setlocale(LC_TIME,'fr_FR');
echo 'locale - '.setlocale(LC_TIME,'0');
echo ' : month - '.strftime('%B');
echo '<br />';
setlocale(LC_TIME,'fr-FR');
echo 'locale - '.setlocale(LC_TIME,'0');
echo ' : month - '.strftime('%B');
echo '<br />';
setlocale(LC_TIME,'fr');
echo 'locale - '.setlocale(LC_TIME,'0');
echo ' : month - '.strftime('%B');
echo '<br />';
setlocale(LC_TIME,'french');
echo 'locale - '.setlocale(LC_TIME,'0');
echo ' : month - '.strftime('%B');
echo '<br />';
?>
результаты:
locale - C : month - October
locale - C : month - October
locale - C : month - October
locale - C : month - October
locale - C : month - October
locale-a (показывает локали fr):
fr_BE.utf8
fr_CA.utf8
fr_CH.utf8
fr_FR.utf8
fr_LU.utf8
Спасибо за помощь!
3 ответов
хорошо, после публикации этого я попробовал еще одну вещь. Поэтому для тех, кто испытывает ту же проблему, вам нужно сначала установить это перед установкой новой локали:
setlocale(LC_TIME, "");
Если вы хотите использовать системную локаль по умолчанию в Apache2, вам просто нужно добавить (или раскомментировать) следующую строку в файле /etc/apache2/envvars :
. /etc/default/locale
подумайте, чтобы перезапустить apache2 после этой операции и очистить потенциальный кэш для проверки языкового стандарта хорошо дается PHP.