toe*_*lab 64 php date setlocale
该setlocale()功能未设置所需的语言(德语).
目标是输出月份名称.
到目前为止,这是我的测试代码:
<?php
date_default_timezone_set('Europe/Berlin');
setlocale(LC_ALL, 'de_DE.utf8');
// Or
setlocale(LC_ALL, 'de_DE@euro');
// Or
setlocale(LC_ALL, 'de_DE');
// Or
setlocale(LC_ALL, 'de');
// Or
setlocale(LC_ALL, 'ge');
echo strftime('%B');
Run Code Online (Sandbox Code Playgroud)
输出:
六月
代替
六月
有什么建议?
PHP 5.6版
Ben*_*ler 93
很可能在您运行脚本的服务器上没有安装德语语言环境 - 您是否具有对服务器的shell访问权限?然后试试
locale -a
Run Code Online (Sandbox Code Playgroud)
查看已安装的语言环境.另外看看这里依赖setlocale是否可行,并依赖于安装的语言环境?
sva*_*ssr 31
你的代码是正确的.您可能只需要在运行脚本的服务器上安装正确的语言包.
在终端中,如果在运行命令时未列出您要使用的语言sudo locale -a,则必须通过运行以下命令来安装它:
sudo /usr/share/locales/install-language-pack de_DE
Run Code Online (Sandbox Code Playgroud)
(sudo如果您的用户具有root权限,这里是可选的)
然后,如果你仔细检查,sudo locale -a你应该看到de_DE.utf8.
如果要安装法语语言包运行
sudo /usr/share/locales/install-language-pack fr_FR
Run Code Online (Sandbox Code Playgroud)
然后,您将被允许使用setlocale(...)与您完全相同的方式在PHP中设置您的语言.
注意: 如果您在非utf8项目中,则需要从已安装的软件包生成其他格式.以下是如何继续ubuntu(这个关于debian的工作):
编辑/var/lib/locales/supported.d/cs并添加以下行
fr_FR.iso88591 ISO-8859-1
fr_CA.iso88591 ISI-8859-1
Run Code Online (Sandbox Code Playgroud)
并运行
sudo dpkg-reconfigure locales
Run Code Online (Sandbox Code Playgroud)
然后再次运行sudo locale -a你应该在列表中看到fr_FR.iso88591和fr_CA.iso88591,你可以通过调用在php中使用它setlocale(LC_ALL, 'fr_FR.iso88591');
Ric*_*zel 20
对于那些来这里寻找date()的人来说,本地化月份和工作日名称:
==注意==
date()只能以英文返回月/日名称,并且无法为您提供其他语言的翻译.
toe*_*lab 10
如果您没有对服务器的shell访问权限,此解决方案可能会有所帮助.
如果你有shell访问权限,那么Benjamin Seiller的答案是最好的!
由于我没有任何其他可能性(shell),我通过使用IntlDateFormatter类找到了仅使用PHP的解决方案.
<?php
// Example vars
$month = '6';
$year = '2014';
$fmt = new IntlDateFormatter('de_DE',
IntlDateFormatter::FULL,
IntlDateFormatter::FULL,
'Europe/Berlin',
IntlDateFormatter::GREGORIAN);
$lastMonth = mktime(0, 0, 0, $month -1, 1, $year);
$showLastMonth = $fmt->format($lastMonth);
echo $showLastMonth;
Run Code Online (Sandbox Code Playgroud)
这真是太痛苦了。
我想将日期翻译成西班牙语,它可以在我的本地主机上运行,但不能在服务器上运行(Ubuntu 18)。事实证明我没有正确的语言环境包。
首先我检查了已安装的软件包以确保它们丢失
locale -a
Run Code Online (Sandbox Code Playgroud)
然后我使用脚本安装了西班牙语 UTF
sudo pkg-reconfigure locales
Run Code Online (Sandbox Code Playgroud)
然后我花了几个小时把头撞在桌子上,直到我意识到你需要重新启动 APACHE!
sudo service apache2 restart
Run Code Online (Sandbox Code Playgroud)
我的故事到此结束。希望能帮助到你。
试试这个:
date_default_timezone_set('Europe/Berlin');
$loc=setlocale(LC_ALL, 'de_DE@euro', 'de_DE', 'deu_deu');
echo strftime('%B');
Run Code Online (Sandbox Code Playgroud)
注意:setlocale()的返回值取决于PHP正在运行的系统。它完全返回系统setlocale函数返回的内容。
如果您具有root用户访问权限(debian),请采用以下解决方案:
编辑
/etc/locale.gen
Run Code Online (Sandbox Code Playgroud)
您可以添加/删除需要使用的语言环境。保存文件后运行:
locale-gen
Run Code Online (Sandbox Code Playgroud)
你应该没事的 在我的服务器上,我必须重新启动Apache才能查看更改。
在我的情况下,这不起作用:
setlocale(LC_ALL, 'de_AT'); // false
Run Code Online (Sandbox Code Playgroud)
虽然这确实有效:
Locale::setDefault('de_AT'); // true
Run Code Online (Sandbox Code Playgroud)
这确实有效:
setlocale(LC_ALL, 'de_AT.utf-8'); // true
Run Code Online (Sandbox Code Playgroud)
语言环境程序的输出:
$ locale -a
[...]
C.UTF-8
de_AT.utf-8
de_DE.utf-8
en_AG
[...]
Run Code Online (Sandbox Code Playgroud)
根据底层操作系统"de_DE"和其他操作系统的不同,字符串可能是错误的。
在 Windows 下请参考此列表:
通常在 Win 下是“DEU”或“GERMAN”。
已经提到过:
在 Linux 下,您可以使用 shell 命令查看所有语言环境:
locale -a
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
72548 次 |
| 最近记录: |