Я пытаюсь установить локаль от fr_FR до us_US в PHP (php-fpm) с nginX на моей малине-пи.
Вот мой код:
<?php system('locale -a'); /* C POSIX en_US.utf8 fr_FR fr_FR.iso88591 fr_FR.iso885915@euro fr_FR.utf8 So the en_US locale is well installed */ echo locale_get_default(); /* fr_FR */ echo setlocale(LC_ALL, '0'); /* LC_CTYPE=fr_FR.UTF-8;LC_NUMERIC=C;LC_TIME=C;LC_COLLATE=C;LC_MONETARY=C; LC_MESSAGES=C;LC_PAPER=C;LC_NAME=C;LC_ADDRESS=C;LC_TELEPHONE=C; LC_MEASUREMENT=C;LC_IDENTIFICATION=C */ var_dump(setlocale(LC_ALL, 'en_US.UTF-8', 'en_US.UTF8')); /* bool(false) */ var_dump(setlocale(LC_ALL, 'fr_FR.UTF8')); /* string(10) "fr_FR.UTF8" useless, but it shows that setlocale works with the already set locale */ ?>
Я не понимаю, почему setlocale
возвращает false
.
Кажется, что-то не работает, но мне не удается найти что.
У меня возникла такая же проблема после установки дополнительных локалей на debian-машине с nginx с php5-fpm
Чтобы устранить проблему, мне пришлось перезапустить php5-fpm.
Из документов (примечание в Windows ):
В Windows setlocale (LC_ALL, '') устанавливает имена локалей из региональных / языковых настроек системы (доступных через Панель управления).
Работал для меня после того, как я побежал:
sudo apt-get -y install language-pack-pt service php7.1-fpm restart <?php date_default_timezone_set('America/Sao_Paulo'); setlocale(LC_ALL, 'pt_BR', 'pt_BR.iso88591', 'pt_BR.utf8'); echo \Carbon\Carbon::now()->addMonth()->formatLocalized('%d %B %Y');