2013-02-11 172 views
7

我使用这个脚本在我的网站翻译检测用户的首选语言和谷歌翻译自动

<div id="google_translate_element" align="center"></div> 
<script type="text/javascript"> 
    function googleTranslateElementInit() { 
     new google.translate.TranslateElement({ 
     pageLanguage: 'auto', 
     autoDisplay: false, 
     layout: google.translate.TranslateElement.InlineLayout.SIMPLE 
     }, 'google_translate_element'); 
    } 
</script> 
<script src="//translate.google.com/translate_a/element.js?cb=googleTranslateElementInit"></script> 

它工作得很好:) 但是,有没有一种方法来检测用户的IP和经销商的翻译时,用户进入我的网站?

+1

请阅读** **的标签把它们应用到一个问题前仔细阅读。这与[tag:java]无关。 – 2013-02-11 23:41:42

+0

*“但有没有办法检测用户的IP和自动翻译”*最好提供一个语言选项列表,让用户选择。法国人在英国或德国旅行时可能更喜欢法语。 – 2013-02-11 23:43:40

回答

2

虽然您可以使用基于IP的位置检测(请参阅this answer),但它既不可靠也不会让您更加了解用户的首选语言(例如,出国旅行的用户等)。

具有较大国际流量的网站使用各种参数来决定内容应以哪种语言呈现。其中一些参数:

  • Accept-Language HTTP标头详细讨论了here。性能window.navigator.language或反对CLDR检查window.navigator.userLanguage(用于IE)
  • 基于IP的位置检测数据的
  • 价值观为您提供在该地区共同的语言。

MediaWiki扩展UniversalLanguageSelector使用这些因子以及存储的用户偏好为每个用户提供一个通用语言列表。见getFrequentLanguageList()

W3C也有一些recommendations

1

此脚本翻译下拉框只能用于英语的人不能设置为主要或唯一的语言,并隐藏它当英语用户查看页面 - 它被编码为使用在该en英文网页谷歌代码。

它使用该语言的前2个字符,以避免检查many variants of English,如en-US,en-tt等 - 它们都以en开头。

这可以很容易地适应检测pageLanguage并将其与用户的首选语言进行比较。因为这是用在新的浏览器版本,看到使用navigator.languages是重要cross-browser compatibility explained

<div id="google_translate_element"></div> 
<script type="text/javascript"> 
var userLang = navigator.language || navigator.userLanguage || navigator.languages; 
if (userLang.substr(0,2) != "en"){ 
    function googleTranslateElementInit() { 
    new google.translate.TranslateElement({pageLanguage: 'en', layout: 
    google.translate.TranslateElement.FloatPosition.TOP_LEFT}, 'google_translate_element'); 
    } 
} 
else { 
    document.getElementById("google_translate_element").style.display="none"; 
    } 
</script> 
<script type="text/javascript" src="//translate.google.com/translate_a/element.js?cb=googleTranslateElementInit"></script>