如何在不修改WordPress 4.9.4网站语言的前提下实现日历本地化?
嘿,看起来你已经迈出了正确的第一步!要在不改动WordPress全局站点语言的前提下,实现印尼语日历的本地化,结合你已经完成的设置,咱们把剩下的操作补全:
实现WordPress日历本地化(印尼语,不修改站点语言)
1. 补全印尼语日期转换函数
你已经有了函数的开头,咱们把完整的函数写完,替换掉日期里的英文月份和星期为印尼语版本:
function indonesian_date ($timestamp = '', $date_format = 'l, j F Y | H:i', $suffix = 'WIB') { if (trim ($timestamp) == '') { $timestamp = time (); } elseif (!ctype_digit ($timestamp)) { $timestamp = strtotime ($timestamp); } // 移除英文序数词后缀(印尼语没有这类表述) $date_format = preg_replace ("/S/", "", $date_format); // 定义印尼语月份映射 $months = array( 'January' => 'Januari', 'February' => 'Februari', 'March' => 'Maret', 'April' => 'April', 'May' => 'Mei', 'June' => 'Juni', 'July' => 'Juli', 'August' => 'Agustus', 'September' => 'September', 'October' => 'Oktober', 'November' => 'November', 'December' => 'Desember' ); // 定义印尼语星期映射 $days = array( 'Sunday' => 'Minggu', 'Monday' => 'Senin', 'Tuesday' => 'Selasa', 'Wednesday' => 'Rabu', 'Thursday' => 'Kamis', 'Friday' => 'Jumat', 'Saturday' => 'Sabtu' ); // 生成格式化日期并替换为印尼语 $date = date ($date_format, $timestamp); $date = str_replace (array_keys($months), array_values($months), $date); $date = str_replace (array_keys($days), array_values($days), $date); // 添加时区后缀(可选,按需开启) if (!empty($suffix)) { $date .= ' ' . $suffix; } return $date; }
2. 函数的使用方式
把这段代码添加到你的主题functions.php文件末尾(或者用自定义代码插件如Code Snippets,更安全),之后就可以在主题模板里调用它来显示本地化日期:
- 显示默认格式的当前日期:
<?php echo indonesian_date(); ?> - 自定义格式显示(比如只显示日期):
<?php echo indonesian_date('', 'j F Y'); ?> - 转换指定时间的日期:
<?php echo indonesian_date('2024-05-20'); ?>
3. 适配WordPress内置日历小工具(可选)
如果你的站点用了WordPress自带的日历小工具,要让它也显示印尼语,添加下面的过滤器代码来替换日历里的文本:
add_filter('gettext', 'indonesian_calendar_text', 20, 3); function indonesian_calendar_text($translated_text, $text, $domain) { if ($domain == 'default') { // 替换月份全称 $month_translations = array( 'January' => 'Januari', 'February' => 'Februari', 'March' => 'Maret', 'April' => 'April', 'May' => 'Mei', 'June' => 'Juni', 'July' => 'Juli', 'August' => 'Agustus', 'September' => 'September', 'October' => 'Oktober', 'November' => 'November', 'December' => 'Desember' ); // 替换星期缩写 $day_translations = array( 'Sun' => 'Min', 'Mon' => 'Sen', 'Tue' => 'Sel', 'Wed' => 'Rab', 'Thu' => 'Kam', 'Fri' => 'Jum', 'Sat' => 'Sab' ); if (array_key_exists($text, $month_translations)) { return $month_translations[$text]; } if (array_key_exists($text, $day_translations)) { return $day_translations[$text]; } } return $translated_text; }
这段代码会拦截WordPress默认文本输出,把日历里的英文月份和星期缩写替换成印尼语,不用改站点语言就能让日历本地化。
最后验证
确认你在「设置>常规」里的时区设为雅加达,日期格式j F Y、时间格式H:i,这样和函数逻辑匹配,显示的日期格式会更统一。
内容的提问来源于stack exchange,提问作者PUSTAKAKORAN.COM
相关产品推荐
相关产品推荐

