当我选择网站语言时,有没有办法翻译菜单?有没有人能在不使用插件的情况下解决这个问题?
How to translate menu items?
3 个回复
SO网友:Vincent Wong
您可以使用其他语言创建菜单。然后使用条件代码切换菜单。也可以使用菜单的标题属性。
if($language==\'us\'):
wp_nav_menu(menu1);
else:
wp_nav_menu(menu2);
endif;

SO网友:elicohenator
您可以使用Polylang插件,它将为每种语言创建不同的模板,并为每种语言集成不同的菜单。
从这里开始阅读并深入了解:https://wordpress.org/plugins/polylang/
SO网友:Sam Bull
我只是写了一个简单的钩子来使用普通的翻译函数,我只是把它添加到我的主题functions.php
文件
/** Translate menu items. */
function translate_menu_item_frontend($item_output, $item) {
if (property_exists($item, \'title\')) {
$parts = explode(\'|\', $item->title);
$context = count($parts) > 1 ? $parts[0] : null;
$text = end($parts);
return preg_replace(
\'/(<.*?>).*(<\\/.*?>)/s\', \'$1\' . _x($text, $context) . \'$2\', $item_output, 1);
}
return $item_output;
}
add_filter(\'walker_nav_menu_start_el\', \'translate_menu_item_frontend\', 20, 2);
add_filter(\'megamenu_walker_nav_menu_start_el\', \'translate_menu_item_frontend\', 20, 2);
例如,这意味着您可以将菜单项导航标签设置为“主页”,并使用内置核心翻译进行翻译。还可以指定用分隔的上下文|
, 因此,例如,“主题初学者内容|联系人”将使用内置核心翻译来表示“联系人”。如果您还想提供自己的翻译,那么可以轻松地将其调整为支持自定义域。
结束