好的,这里是事情,我有一个网站,并希望它检查是否有人浏览器语言列表德语和显示他们德语文本,如果它是,如果它不是德语应该总是得到一个英语版本。一个朋友(他现在没有更多的时间了)给我写了这个索引:
<script>
var texte = {
'title': {
'de':'eis',
'en':'ice'},
'subtitle': {
'de':'Untertitel DE',
'en':'Subhead Eng'},
'email': {
'target':'placeholder',
'de':'Platzhalter DE',
'en':'Email me when it is ready'},
'submit': {
'target':'value',
'de': 'Lorem Ipsum',
'en': 'send'
},
'share_txt': {
'de': 'bitte teilen',
'en': 'share...'
}
};
(function (d, s, id) {
var js, fjs = d.getElementsByTagName(s)[0];
if (d.getElementById(id)) return;
js = d.createElement(s);
js.id = id;
js.src = "//c";
fjs.parentNode.insertBefore(js, fjs);
}(document, 'script', 'facebook-jssdk'));
(function(d){
var t = window.navigator.language!='de'?'en':'de';
for(i in texte){
var target = d.getElementById(i),
text = texte[i][t];
if(texte[i].target){
target[texte[i].target] = text;
}else{
target.innerText = text;
}
}
})(document);
</script>
这在Chrome中有效,但在safari中无效。你们知道吗?此外,我认为一个简单的解决方案是检测,然后将用户发送到index_de.html或index_eng.html页面。我将如何实现这一点?
你们检验过window.navigator.language
的实际值吗?
如果我正确理解文档,语言是在RFC 4646符号,所以它也可以有符号de-DE
。因此,您可能希望只检查前两个字符,而不是只获得不含子标签的主要语言。
一个小小的改变会让你得到这个:
var t = window.navigator.language.substr(0, 2)!='de'?'en':'de';