1

我有一个网站,我手动翻译了五种语言,添加了按钮以选择首选语言。

我的问题是,有时 Chrome 会提供Translate this page用户语言选项,或者根据设置自动翻译它。

而且由于$_SERVER['HTTP_ACCEPT_LANGUAGE']并不总是 100% 可靠(如果根本没有丢失),因此可能会发生这样的情况:打开我的英文版网站的用户(比如说意大利用户)会发现一个不那么准确的谷歌翻译页面而不是网站的“官方”意大利语版本。

此外,使用意大利语HTTP_ACCEPT_LANGUAGE的用户可能出于任何原因希望以另一种语言查看网站,并且每次更改页面时都看到 Google 的弹出窗口非常烦人(即使您可以Disable it for this website)。

所以我找到了这些解决方案:(<html lang="en" translate="no">由于某种原因不起作用)和<meta name="google" content="notranslate">(有效)。

问题是他们阻止谷歌翻译任何语言,理解我网站中未包含的语言。

那么,有没有办法阻止谷歌(或其他翻译)提议翻译/自动翻译我的页面只用某些语言?

4

1 回答 1

0

我建议在服务器端嗅探接受的语言,然后动态添加标题,以防用户使用您在您的网站上“本机”支持的语言之一。

<html>
<head>
<?php
    $lang = substr($_SERVER['HTTP_ACCEPT_LANGUAGE'], 0, 2);
    $acceptLang = ['it', 'en', 'fr']; // your list of supported languages
    if (in_array($lang, $acceptLang)) {
?>
<meta name="google" content="notranslate">
<?php    
    }

?>
</head>

Chrome的语言检测:

Chrome 使用所谓的“CLD”(Compact Language Detector,现在是第 3 版),它使用神经网络扫描网页上的文本,以确定最有可能在呈现的网页上使用哪种语言。如果您想了解整个过程,CLD V2的整个过程都有很好的文档记录。如果网页无法在 Chrome 中翻译,这很可能是由于 Chrome 无法根据页面上的信息正确识别语言。支持更容易识别的一种可能的解决方法是在页面开头添加一个隐藏的文本块,其中包含足够的页面语言文本,至少这是从这个 SO answer中获得的建议。

于 2020-05-26T14:04:50.653 回答