遇到一个特殊的需求,客户想在顶部菜单同时添加:语言和货币的切换表单。实际生产中更好的解决方法是可以让语言和货币同步,浏览者在切换语言的时候自动进行货币的切换即可。

切换语言货币自动切换

但是既然是客户要求,那就需要优先满足客户需求,并且语言切换货币跟随需要特定的一些多语言插件才能实现,而客户使用的是免费的GTranslate插件,这个属于机器翻译,类似浏览器翻译,是无法获取网页数据的,所以确实也没办法自动切换。

基于以上的情况,我检查了多语言插件和货币插件,分别是 GTranslate WooCommerce Multi Currency 最终我通过两个插件提供的简码,在Elementor编辑器上很容易就实现了效果:

语言或货币切换

但是还是遇到了一个小问题,因为多语言插件和货币插件没有实际关联,所以在切换语言翻译后就会遇到一个bug,就是货币也会进行翻译,例如USD翻译为Usona dolaro,类似如下图:

货币被多语言翻译插件翻译

因为两个表单离的比较近,还会导致叠加,效果很差。

随后我对两个插件各种设置修改,但是依然不能解决问题,主要是此种翻译是通过浏览器机器翻译,所以只有在翻译的那一刻才会出现这个bug,之前之后都没有痕迹,没办法进行修改。

最终想到一种办法是:排除货币表单模块的网页翻译。

即强制货币所在的模块不参与浏览器翻译响应,这里需要使用到HTML5的translate标签,只需要在网页中不需要翻译的模块里面加上:translate=no” 这样的属性就可以,具体可以参看 使用 HTML 的translate属性 的说明。

使用Elementor非常方便,只需要找到不需要翻译的模块,然后在高级里面找到属性,然后添加translate|no(前面书属性,后面是值)即可:

Elementor如何添加属性

最终通过以上方法完成了客户需要的效果。

 

声明:本站分享的WordPress主题/插件均遵循 GPLv2 许可协议(免费开源),相关介绍资料仅供学习参考,实际版本可能会因版本迭代或开发者调整而产生变化,如程序中涉及有第三方原创图像、设计模板、远程服务等内容,应获得作者授权后方可使用。本站不提供该程序/软件的产品授权与技术服务,亦不收取相关费用。