我的WordPress博客设置为nl_NL
. 这意味着我的bookly plugin 也显示在中nl_NL
.
在插件目录中有一个包含大量其他语言的文件夹languages。
我有三种不同语言的一页nl_NL
, de_DE
, en_EN
, 在此页面上,我希望预订插件以正确的语言显示。
我通过页面id从更改了页面语言nl_NL
到de_DE
通过function.php
, 但这没有任何效果。
function get_top_parent_page_id() {
global $post;
if ($post->ancestors) {
return end($post->ancestors);
} else {
return $post->ID;
}
}
function addLangMetaTag (){
$postLanguage = "nl_NL";
if (is_page()) {
$svPageID = get_top_parent_page_id(); // ID of parent page
if ($svPageID == "13040") { // ID of the "på svenska" page
$postLanguage = "de_DE";
}
echo "<meta http-equiv=\\"content-language\\" content=\\"" . $postLanguage . "\\">";
}
}
add_filter( \'wp_head\', \'addLangMetaTag\' );
function language_tagger_change_html_lang_tag() {
return "dir=\\"ltr\\" lang=\\"" .
language_tagger_determin_lang_tag() . "\\"";
}
function language_tagger_determin_lang_tag() {
$postLanguage = \'nl_NL\'; // default language
if (is_page()) {
$svPageID = get_top_parent_page_id(); // ID of parent page
if ($svPageID == "13040") { // ID of the "på svenska" page
$postLanguage = "de_DE";
}
}
return $postLanguage;
}
add_filter(\'language_attributes\',
\'language_tagger_change_html_lang_tag\');
我想它只会看WordPress
config.php
define(\'WPLANG\', \'nl_NL\');
我也一直在阅读
this post 也许我可以组合一些东西?
SO网友:butlerblog
您正在做的是更改http等价元标记。更改HTML标记不会更改页面内容的语言。它只是告诉浏览器(和机器人/蜘蛛)内容是什么语言supposed 是的。
如果要更改内容显示的语言,需要更改bookly插件的textdomain。
你可以用WP\'s plugin_locale
filter. 该过滤器在加载语言文件时运行,允许您更改所使用的textdomain(de\\u de或nl\\u nl)。
add_filter( \'plugin_locale\', function( $locale ) {
if (is_page()) {
$svPageID = get_top_parent_page_id(); // ID of parent page
if ($svPageID == "13040") { // ID of the "på svenska" page
$locale = "de_DE";
}
}
return $locale;
});
如果您需要更改的不仅仅是插件的输出(即整个页面的语言),那么您可能需要
determine_locale
filter in the determine_locale()
function. 与上述内容相同,但
determine_locale
作为过滤器挂钩。