WordPress公历转波斯历:月份显示拉丁化波斯语而非波斯文问题
解决方案
问题根源在于你使用的locale参数是en_US@calendar=persian,这会让日期格式化器调用英文语境下的波斯历月份名称(拉丁化拼写形式)。要显示波斯语原生的月份文字,只需将locale切换为波斯语(伊朗)的本地化标识即可。
修改后的代码如下:
$now = new DateTime(); $formatterMonth = new IntlDateFormatter( "fa_IR@calendar=persian", // 替换为波斯语本地化标识 IntlDateFormatter::FULL, IntlDateFormatter::FULL, 'Asia/Tehran', IntlDateFormatter::TRADITIONAL, "dd MMMM", ); echo $formatterMonth->format($now); // 输出示例:۲۹ فروردین
额外说明
- 若服务器未安装波斯语locale包,可能会导致不生效。可通过执行
locale -a命令检查系统中是否存在fa_IR或fa_IR.utf8,若缺失需安装对应locale包(比如Debian/Ubuntu系统可执行sudo locale-gen fa_IR.utf8)。 - 若
fa_IR@calendar=persian仍有问题,可尝试使用fa_IR.utf8@calendar=persian,显式指定UTF-8字符编码,避免乱码问题。
内容的提问来源于stack exchange,提问作者Alipvd
相关产品推荐
相关产品推荐

