PHP日期-以当地语言获取月份名称

2012-12-13 php date localization

我有函数的这一部分,它用英语给我月份的名称。如何将它们翻译成我的本地语言(塞尔维亚语)?

$month_name = date('F', mktime(0, 0, 0, $i));

其中$i是月份数(值1-12)。另请参见PHP:mktime

Answers

您应该使用setlocale()

setlocale(LC_TIME, 'fr_FR');
$month_name = date('F', mktime(0, 0, 0, $i));

在这种情况下,它将设置为法语。对于您的情况,应为以下之一:

  1. sr_BA塞尔维亚(黑山)
  2. sr_CS塞尔维亚文(塞尔维亚)
  3. sr_ME塞尔维亚(塞尔维亚和黑山)

您应该使用setlocale()strftime()

setlocale(LC_TIME, 'sr_CS');
$month_name = strftime('%B', mktime(0, 0, 0, $i));

这是IntlDateFormatter的示例

$format = new IntlDateFormatter('sr_CS', IntlDateFormatter::NONE, 
              IntlDateFormatter::NONE, NULL, NULL, "MMM");
$monthName = datefmt_format($format, mktime(0, 0, 0, $i));

设置语言环境时最好传递编码:

 <?php    
 date_default_timezone_set('Europe/Belgrade');
 setlocale(LC_TIME, array('sr_CS.UTF-8', 'sr.UTF-8'));

对于所有与德语(和de_DE )斗争的人,请确保您使用的语言代码正确。登录到服务器并运行locale -a以查看所有可用服务器的列表。对我来说,它表明:

C
C.UTF-8
de_AT.utf8
de_BE.utf8
de_CH.utf8
de_DE.utf8
de_LI.utf8
de_LU.utf8
...

您需要使用这些代码之一。

然后,您可以使用:

date_default_timezone_set('Europe/Berlin');
setlocale(LC_ALL, 'de_DE.utf8');
$date_now = date('Y-m-d');
$month_available = strftime('%B %Y', strtotime($date_now));
$month_next = strftime('%B %Y', strtotime($date_now.' +1 month'));

和“März2020”等正确显示。

Related