2013-08-22 2 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); 
    } 
} 

또한 워드 프레스 코덱스 사이트에 Widgets API을 확인할 수 있습니다 : 위젯 클래스의 생성자에서 나는 다음 코드를 넣습니다. 바라기를이 사용자 정의 위젯을 만드는 데 도움이됩니다.

또한 제가 주로하는 일은과 같이, 워드 프레스에서로드 기본 사람과 나의 번역을 병합 할 수 있습니다 :

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_textdomain 기능과 유사하지만, 존재하는 모든 필터를 피할 수 원래 함수에서 어떤 WordPress 후크가 $domain$mofile 변수를 변경하는 것을 피하는 데 도움이됩니다.

그러나 나는 당신에게 맡길 것입니다. 어쩌면 load_textdomain() WordPress의 기능은 정상적으로 작동하지만, 경우에 따라이 기능이 트릭을 수행해야합니다. 당신은 당신이 당신 functions.php 상주과 같은 폴더에 languages 폴더를 배치 할 수 있습니다 위에 나는 그 새 폴더에 붙여 넣은 loadTextDomain() 기능을 사용하는 경우

지금 당신은 당신이 사용하는 언어에 따라 theme.nl_NL.mo 또는 theme.de_DE.mo 파일을 저장할 수 있습니다. 이것은 귀하의 웹 사이트 및 관리 영역의 번역을 허용해야합니다.