我尝试在我的raspberry-pi上使用nginX将PHP中的语言环境从fr_FR设置为us_US(php-fpm)。
这是我的代码:
<?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
似乎某些东西不起作用,但我找不到什么。
答案 0 :(得分:8)
在使用php5-fpm运行nginx的debian机器上安装其他语言环境后,我遇到了同样的问题
要解决这个问题,我必须重启php5-fpm。
答案 1 :(得分:1)
我跑完后为我工作:
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');
答案 2 :(得分:0)
从文档(注意在Windows上):
在Windows上,setlocale(LC_ALL,'')设置区域设置名称 系统的区域/语言设置(可通过控制面板访问)。