今天下午被叫去产品那里,给我看了之前写的界面里面出现奇怪的中文字符,明明网页都是拼音,怎么会出现汉字,我一脸懵逼。

于是我远程看了销售的电脑网页,还真是,神奇的出现乱码一样的页面。我熟练的 f12 打开控制台看看元素有没有被加上奇怪的东西,有没有打印出 error,没有令我失望,html 这个 dom 被加上了一个本该没有的 class,language 被改写成了 zh-CN。多打开几次,发现右上角总有翻译提示框,还自动翻译了。问题应该就出在页面被自动翻译上了,点开显示原网页,果然正常。

那么问题该怎么解决呢?首先想到的当然是 chrome 设置,禁止自动弹出翻译查询框了,但是这个自动翻译,应该是被误触了,点击了一律翻译英文页面,这里也得给他改回来。但是,作为一个程序员,当然要从程序层面去解决这个问题,因为谁也不知道哪个用户会遇到这个问题,我也不可能一个个的去帮他们修改设置项。

要解决这个问题,首先得知道什么情况下,chrome 会弹出翻译询问框。

设置那里说了非本语言,一律翻译为中文。

那么什么叫做非本语言呢?我们中国人,一般喜欢设置默认语言为中文,即非中文的时候,一律会被翻译为英文。这里的中文指的是汉字,不包括阿拉伯数字和英文字母。所以当页面的 language 不是 zh-CN 并且页面中含有非汉字时,就会弹出翻译询问框,这里很容易被误点击一律翻译为中文,然后打开的所有符合以上条件的页面都会被自动翻译,然后就可以看到你的页面出现奇奇怪怪的字符了。

综上解决这个问题的方法就是,在 html 标签中,设置 language 为 zh-CN,这样,在该页面就不会弹出翻译询问框了,被误点击的机会也没有了,问题基本解决。这里说基本解决,是考虑到还有些已经设置了自动翻译成中文的,这里可以加上 no-translate,Stack Overflow 上的人说能解决。可以一试。