1

我已经正确创建了一个自定义小部件,除了标题之外,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'
    )
);

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

4

1 回答 1

1

我通常使用register_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 网站上的小部件 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');

此代码看起来类似于load_textdomainWordPress 中的函数,但它避免了原始函数中确实存在的所有过滤器,这有助于避免任何 WordPress 挂钩更改您的$domain$mofile变量。

但我会把它留给你。也许load_textdomain()来自 WordPress 的函数也可以正常工作,但如果它没有,这个函数应该可以解决问题。

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

于 2013-08-22T09:34:05.150 回答