网站语言选择

5
这个问题可能显而易见,但是...我已经在网上和stackoverflow上搜索了很久,但没有找到令人满意的答案。
对于网站添加语言选择,有哪些好的起点?
我的URL将是:
example.com/de/ example.com/en/
用来指示当前语言,再加上一个cookie,设置初始语言后。
当着陆在example.com上时,我会首先检查(recent) cookie,然后检查ACCEPT_LANG,最后检查是否给定了特定的url,如/en/、/de/。
为了允许书签,语言将始终成为url的一部分,即如果我确定用户想要以德语查看网站,我将重定向到example.com/de/。
现在我的问题是:这些天来,信号服务器用户选择的首选方式是什么?我不是在谈论视觉选择(下拉菜单与维基百科类似的语言列表),也不是地理定位与ACCEPT_LANG,而是用户向服务器发出信号。我考虑的是:(假设用户在英文网站上,并想切换到德文网站)
1.使用客户端JavaScript魔术并更改location.href s//en///de/ 2.在服务器上预渲染语言更改链接(这会让我有机会抑制不存在的翻译链接) 3.后台提交到example.com?lang=de&orig=,该操作会进行响应重定向。如果用户在填写字段时决定切换语言,这将给我重新填充表单变量的机会,但我对此并不确定。
还有其他可能性或最好的技术上看是什么?

  1. 使用智能默认设置(浏览器语言?)并将用户的任何更改存储在Cookie中。
- Jeroen
在着陆example.com之后...应该首先检查URL中的语言是否存在,而不是最后再检查。 - Serge Wautier
关于解决方案3,服务器可以使用referer而不是'orig'参数。更加简洁和易于编码。 - Serge Wautier
2个回答

1

我个人最喜欢的方案是解决方案3,因为它意味着您有一个特定的“更改语言”请求,可以进行特定的处理,例如在cookie中保存首选项。

仅使用客户端巫术修改URL并不告诉服务器用户实际上想要切换语言。可能只是用户从Google/Bing/其他搜索引擎进入了这个特定语言的页面,在这种情况下,用户没有积极选择一种语言,因此选择不应存储在cookie中。

(我不确定您在解决方案#2中的意思。您能否请澄清一下?)

顺便说一句,请不要基于地理位置选择语言。我可以识别所有这样做的网站:它们显示荷兰语,因为我是比利时人,比利时人口的60%是荷兰语使用者。对于我们40%的法语使用者来说,运气不好,即使我们的Accept Language设置为法语 :-(


在这里的 #2 指的是,服务器端脚本会检查所请求的页面是否也能以德语的形式提供。如果是,则渲染一个 <a href= ... /de/thispage.html> 链接。否则,语言切换不会被显示。与 #1 中的客户端 JavaScript 不同,它只能无条件地呈现这些链接。 - JohnDoe
顺便说一句,我曾经认为通过#1将值分配给location.href会发出HTTP GET请求。 - JohnDoe

0

或者您可以使用localStorage键/值对,当页面加载时检查是否设置了首选项,并相应地进行指导。就像cookie一样,它们可以随时清除,但使用本地存储会在浏览器选项卡和会话之间持久存在。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接