我创建了一个需要使用德语和英语的Wordpress主题。在导航中,我有一个按钮,它应根据当前使用的语言更改语言。 (如果他们正在查看英文页面,它应该显示" Deutsch"反之亦然。)
我使用qTranslate Plus并选择在网址(/ de或/ en)中显示语言代码。我的主要问题在于我在自定义页面(带有模板的Wordpress页面)(/ custom-page)并更改它不会改为德语的语言,尽管在源代码中链接显示/ de /自定义页面。它完全忽略语言代码并再次将我带到/ custom-page。所以它似乎正在剥离语言代码。
这是标准的Wordpress行为,如果是这样,我该如何禁用它? 还有更好,更可靠的方式来改变语言吗?将语言存储在会话中会起作用吗?
注意:两者都是"隐藏未翻译的内容"和"隐藏默认语言的URL语言信息。"没有检查。
提前致谢, 彼得
答案 0 :(得分:1)
我在我正在制作的网站上遇到了类似的问题。我安装了这个扩展,似乎解决了URL的一些问题
https://wordpress.org/plugins/qtranslate-slug/
或者,您可以使用条件语句使用javascript / jQuery来定位按钮以检测html lang attr。像这样:
var lang = document.documentElement.lang;
if (lang == 'en-US'){
$('button').html('your button text')
}
答案 1 :(得分:1)
qTranslate不受支持。如果你刚刚开始实现它我认为你应该给其他插件一个镜头。以下是qTranslate的一些替代品: mqTranslate和zTranslate。两者都是qTranslate叉子,所以你不应该丢失任何东西。
至于你的问题,你可以使用lang选择器简单地用css隐藏当前语言:
:lang(current languagecode) {
display: none;
/*the other way to hide things*/
text-indent: 9999px;
overflow: hidden;
}
希望这有帮助。
最诚挚的问候。
答案 2 :(得分:0)
我注意到我的两个wordpress安装(3.8.1更新到4.0),mqtranslate(相同的代码)在使用基于URL的路由时不会翻译内容,类似于你的问题。
我安装了" qtranslate plus"刚刚在一个新的wp 4.0上,它按预期的方式使用基于URL的路由(但似乎搞乱了帖子标题中的日期格式)。
所以我认为问题可能是版本号与qtranslate不能很好地协同工作。 也许ppqtranslate_core.php第173行中的preg_match-code没有给出正确的结果。
的解决方法: 我在这一点上停止挖掘并切换到基于域的路由(en.site.com用于english,site.com用于德语)。这完美无瑕。如果你能做到,试试吧。你需要
添加到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>
并使用
重新启动网络服务器/etc/init.d/httpd restart
此基于域的翻译应该有效。