如何用i18n翻译WordPress中date_format的月份名称?
解决方案
直接调整date_i18n的参数即可,它的第一个参数就是自定义日期格式,不需要借助get_option('date_format')。另外要注意date_i18n接受的时间参数是Unix时间戳,而你用date_create得到的是DateTime对象,需要转成时间戳再传入。
修正后的完整代码:
// 获取自定义更新日期字段 $custom_update_date = get_post_meta($post->ID, '_cstm_update_post', true); $PostDate = __('Pubilé le', 'your-text-domain') . ' ' . get_the_date('d F Y'); $PostUpdate = ''; if (!empty($custom_update_date)) { $custom_date = date_create($custom_update_date); // 把DateTime对象转成时间戳,传入date_i18n并指定自定义格式 $formatted_update_date = date_i18n('d F Y', $custom_date->getTimestamp()); $PostUpdate = __('Mis à jour le', 'your-text-domain') . ' ' . $formatted_update_date; echo $PostUpdate; } else { echo $PostDate; }
关键修改点说明:
- date_i18n的正确用法:第一个参数直接填你要的自定义格式
'd F Y',第二个参数传入Unix时间戳(通过$custom_date->getTimestamp()转换),这样既保留了自定义格式,又能让WPML自动翻译月份名称。 - 增加空值判断:避免自定义字段为空时
date_create抛出错误,提升代码健壮性。 - 文本国际化:把
'Pubilé le'和'Mis à jour le'用__()函数包裹,替换your-text-domain为你的主题/插件文本域,这样WPML可以识别并翻译这些固定文本。 - get_the_date的兼容性:
get_the_date本身已经内置了多语言支持(内部调用了date_i18n),所以直接用get_the_date('d F Y')就能保证发布日期的月份也能被正确翻译。
如果后续想让日期格式跟随WP后台的全局设置,只需把'd F Y'替换成get_option('date_format')即可,灵活度拉满。
内容的提问来源于stack exchange,提问作者dragoweb
相关产品推荐
相关产品推荐

