Определение предпочтительного языка пользователя и Google Translate автоматически
Я использую этот скрипт на своем сайте для перевода
<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-адрес пользователя и автоматический перевод, когда пользователь заходит на мой сайт?
2 ответа
Хотя вы можете использовать определение местоположения на основе IP (см. Этот ответ), но это не надежно и не делает вас мудрее в отношении предпочтительных языков пользователя (например, пользователей, путешествующих за границу и т. Д.).
Веб-сайты с большим международным трафиком используют различные параметры, чтобы решить, на каком языке должен быть представлен контент. Некоторые из этих параметров:
Accept-Language
Заголовок HTTP, который подробно обсуждается здесь.- Значения свойств
window.navigator.language
или жеwindow.navigator.userLanguage
(для IE) - Данные определения местоположения на основе IP проверены по CLDR, чтобы предоставить вам общие языки на этой территории.
Расширение MediaWiki, UniversalLanguageSelector
использует эти факторы, а также сохраненные пользовательские настройки, чтобы предоставить список общих языков для каждого пользователя. Увидеть getFrequentLanguageList()
,
W3C также имеет несколько рекомендаций.
Этот сценарий показывает раскрывающийся список перевода только для людей с английским языком, не установленным в качестве основного или единственного языка, и скрывает его при просмотре страниц пользователями английского языка - он кодируется для английских страниц с использованием en
в коде Google.
Он использует только первые 2 символа языка, чтобы избежать проверки на многие варианты английского языка, такие как en-US
, en-tt
и т.д. - все они начинаются с en
,
Это можно легко адаптировать для обнаружения pageLanguage
и сравните его с предпочтительным языком (языками) пользователя. Использование navigator.languages
важно, потому что это используется в более новых версиях браузера, см. объяснение совместимости между браузерами
<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>