2013-08-22 50 views
1

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

这里是我的代码:

$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

我通常使用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的法典现场检查出的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$mofile变量。

但是我会把它留给你。也许WordPress的load_textdomain()函数可以正常工作,但如果它不是这个函数应该做的。

现在,如果你使用loadTextDomain()功能我粘贴上面你可以放置一个languages文件夹中的文件夹中的functions.php所在,在新的文件夹,你可以根据您的使用语言将theme.nl_NL.motheme.de_DE.mo文件。这应该允许翻译您的网站和管理区域。