在导航中使用语言按钮切换语言WordPress

我创建了一个Wordpress主题, 需要使用德语和英语。在导航中, 我有一个按钮, 该按钮应根据他们当前使用的语言来更改语言。 (如果他们正在查看英语页面, 则应该显示” Deutsch” , 反之亦然。)
我正在使用qTranslate Plus, 并选择在url(/ de或/ en)中显示语言代码。我的主要问题在于, 当我进入自定义页面(带有模板的Wordpress页面)(/ custom-page)并更改语言时, 它不会更改为德语, 尽管在源代码中链接显示/ de / custom-page 。它完全忽略了语言代码, 并再次带我进入/ custom-page。因此, 似乎正在剥离语言代码。
这是标准的Wordpress行为吗?如果是, 该如何禁用它?还有没有更好, 更可靠的语言更改方式?可以在会议中存储该语言吗?
注意:” 隐藏未翻译的内容” 和” 隐藏默认语言的URL语言信息” 。未选中。
预先感谢, 彼得
#1我在一个正在处理的网站上遇到了类似的问题。我安装了此扩展程序, 似乎可以解决URL的某些问题

Qtranslate Slug

或者, 你可以使用条件语句来检测html lang属性, 从而使用javascript / jQuery定位按钮。像这样:
var lang = document.documentElement.lang; if (lang == 'en-US'){ $('button').html('your button text') }

#2qTranslate支持不佳。如果你刚刚开始实施它, 我想你应该尝试一下其他插件。以下是qTranslate的一些替代品:mqTranslate和zTranslate。两者都是qTranslate分支, 因此你不应松动任何东西。
至于你的问题, 你可以使用lang选择器简单地使用CSS隐藏当前语言:
:lang(当前语言代码){显示:无; / *另一种隐藏事物的方式* /文字缩进:9999px;溢出:隐藏; }
希望这可以帮助。
最好的祝福。
#3我在我的2个wordpress安装(3.8.1更新为4.0)中注意到, 使用基于URL的路由时, mqtranslate(相同的代码)不会转换内容, 类似于你的问题。
我刚刚在新的wp 4.0上安装了” qtranslate plus” , 它与基于url的路由一样工作正常(但似乎弄乱了post标头中的日期格式)。
所以我认为问题可能是版本号不能与qtranslate一起正常工作。 ppqtranslate_core.php第173行中的preg_match-code可能无法给出正确的结果。
解决方法:我此时停止挖掘, 并切换到基于域的路由(en.site.com(英语)和site.com(德语))。这可以完美地工作。如果可以做到, 请尝试。你需要
  1. 将子域* .site.com路由到域提供商管理器面板中的服务器ip(如果提供商不允许使用通配符*, 则将en.site.com用于单一语言)
  2. 在你的网络服务器(en.site.com)上设置一个子域, 以在与原始站点相同的目录中进行路由。只需将以下代码(编辑域名和webroot的路径)添加到你的httpd.conf(或某些服务器上的apache2.conf)
添加到httpd.conf:
< VirtualHost *:80> ServerName "en.site.com" ServerAdmin webmaster@localhost DocumentRoot /the/path/to/your/html/ < Directory /> Options FollowSymLinks AllowOverride All < /Directory> < Directory /the/path/to/your/html/> Options Indexes FollowSymLinks MultiViews AllowOverride All Order allow, deny allow from all < /Directory> ErrorLog ${APACHE_LOG_DIR}/error.log CustomLog ${APACHE_LOG_DIR}/access.log combined < /VirtualHost>

并重新启动Web服务器
/etc/init.d/httpd restart

【在导航中使用语言按钮切换语言WordPress】这种基于域的翻译应该可以。

    推荐阅读