setlocale和strftime没有翻译月份

Oba*_*bay 6 php locale localization date

我的代码:

setlocale(LC_TIME, 'ca_ES');
echo strftime("%#d %B", strtotime($ticket->date_created));
Run Code Online (Sandbox Code Playgroud)

输出如下:

28 August
Run Code Online (Sandbox Code Playgroud)

而不是我的期望:

28 Agost
Run Code Online (Sandbox Code Playgroud)

我期待"Agost",因为那是加泰罗尼亚语(通过setlocale()).

请问这是怎么setlocalestrftime应该工作?

仅供参考:我的本地开发机器是Windows 7,设置为locale:en-PH

She*_*row 18

Windows上的区域设置名称不同.看起来它违约了英语.

尝试全长名称(您可以尝试几个,它将选择第一个找到):

setlocale(LC_TIME, 'ca_ES', 'Catalan_Spain', 'Catalan');
Run Code Online (Sandbox Code Playgroud)

您可以查看此表,这可能会有所帮助:http://docs.moodle.org/dev/Table_of_locales

  • 在 Ubuntu 15.10 中遇到了同样的问题,通过将“.UTF8”部分添加到 es_ES 来解决 (2认同)

Mar*_*llo 7

您需要在服务器中安装所需的语言环境。

  1. SSH 到您的服务器
  2. 检查安装了哪些语言环境: locale -a
  3. 如果您的语言环境不存在,请安装它: sudo locale-gen ca_ES
  4. 更新服务器中的语言环境: sudo update-locale
  5. 重启 apache 使更改生效: sudo service apache2 restart

这就对了!


Tho*_*ini 6

在 Ubuntu 14.04 上setlocale(LC_TIME, 'de_DE.UTF8');帮我获得了德国月份格式/名称:)