如何翻译像Get_the_Date()这样的函数?

时间:2019-10-22 作者:Кристиян Кацаров

我的wordpress网站有两种语言。主题翻译正确,但每当我使用get_the_date 它是默认的英语。我如何强制使用另一种语言?这个locale filter does not 工作

2 个回复
SO网友:Amir Rami

为什么不在普通PHP中实现呢?

例如,您可以编写如下函数:

function get_the_german_date($date = \'\', $post = null) {
    $d = get_the_date($date, $post);
    if ($d) {
        $d = new DateTime($d);
        return $d->format(\'d.m.Y\');
    } else return false;
}
同样,如果您想遵循WordPress标准:

function the_german_date($date = \'\', $post = null) {
    $d = get_the_date($date, $post);
    if ($d) {
        $d = new DateTime($d);
        echo $d->format(\'d.m.Y\');
    }
}
我意识到这可能是太多的工作了,因为你想根据你的语言环境动态地做,但你可以检查你的语言环境,或者你可以有一个全局日期函数,如果网站是英文的,你可以输出get_the_date 如果不是上面的函数。

SO网友:Кристиян Кацаров

我找到了解决方案:

add_action(\'after_setup_theme\', function() {
    switch_to_locale(get_current_language());
    add_filter(\'locale\', function() {
        return get_current_language() ? get_current_language() : "en_US";
    });
    load_theme_textdomain(\'default\', get_template_directory() . \'/languages\');
});
序列非常重要,之前定义了区域设置过滤器load_theme_textdomainswitch_to_locale 在定义筛选器之前调用。get_current_language 是我编写的一个函数,它从url定义了语言。