我已经正确创建了一个自定义小部件,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'
)
);
有错误吗?翻译小部件名称的另一种方法是什么?
答案 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
个文件,具体取决于您使用的语言。这应该允许翻译您的网站和管理区域。