2013-08-22 83 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文件。這應該允許翻譯您的網站和管理區域。