如何翻译wordpress小部件名称?

时间:2013-08-22 06:34:28

标签: wordpress widget translate

我已经正确创建了一个自定义小部件,evreything正在使用正确的.po文件进行翻译,但标题除外。

这是我的代码:

$concert_widget_name = __('Tour Dates', 'concerts');
wp_register_sidebar_widget (
    'tourdates',                 // your unique widget id
    $concert_widget_name,         // widget name
    'tourdates_widget_display',  // callback function to display widget
    array(                       // options
        'description' => 'Displaying upcoming tour dates'
    )
);

有错误吗?翻译小部件名称的另一种方法是什么?

1 个答案:

答案 0 :(得分:1)

我通常使用register_widget函数注册我的小部件。在widget类的构造函数中,我放置以下代码:

class TourDates extends WP_Widget
{
    public function __construct()
    {
        $options = array('classname' => 'tour-dates', 'description' => __('Display upcoming tour dates'));
        parent::__construct('tour_dates', __('Tour Dates'), $options);
    }
}

您还可以查看WordPress Codex网站上的Widgets API。希望这有助于您创建自定义小部件。

我通常做的是将我的翻译与从WordPress加载的默认翻译合并,如下所示:

function loadTextDomain() {
    $locale = get_locale();
    $languageDir = dirname(__FILE__) . '/languages';

    $domain = 'default';
    $mofile = $languageDir . '/theme.' . $locale . '.mo';

    global $l10n;
    $mo = new MO();
    if (!$mo->import_from_file($mofile)) {
        return false;
    }

    if (isset($l10n[$domain]) && !empty($l10n[$domain]->entries)) {
        $l10n[$domain]->merge_with($mo);
    } else {
        $l10n[$domain] = $mo;
    }
}
add_action('init', 'loadTextDomain');

此代码类似于WordPress中的load_textdomain函数,但它避免了原始函数中存在的所有过滤器,这有助于避免任何WordPress钩子改变您的$domain和{{1变量。

但我会把它留给你。也许来自WordPress的$mofile函数可以正常工作,但是如果不是这个函数应该可以解决问题。

现在,如果您使用我上面粘贴的load_textdomain()功能,您只需将loadTextDomain()文件夹放在与languages所在文件夹相同的文件夹中,就可以放置在functions.php新文件夹中theme.nl_NL.mo 1}}或theme.de_DE.mo个文件,具体取决于您使用的语言。这应该允许翻译您的网站和管理区域。