多语言网站 - 不同语言需要唯一URL(以防缓存)?
我开发了一个使用AppEngine/Python/Django的应用程序,目前支持西班牙语。现在我正在进行国际化,想要支持多种语言。这个应用基本上是一个约会网站,用户可以浏览其他人的个人资料并发送消息。在不同语言下查看个人资料时,某些文本(比如菜单等)会显示为所选语言,但用户自己生成的内容(比如个人资料或消息)会以原始语言显示,也就是用户写的时候用的语言。
我想问的是:对于同一页面,如果用不同语言显示,是否有必要使用不同的URL,还是可以用同一个URL来显示不同语言的内容?我特别担心如果我对多个语言使用同一个URL,可能会导致某些页面被缓存(比如被谷歌或者其他我不知道的代理缓存),这样用户看到的可能就是错误的语言。
有没有人知道这是个合理的担忧,还是我在担心一些根本不会发生的事情?
2 个回答
3
我不知道在Django中这个是怎么工作的,但从一般的网站开发角度来看,你可以:
使用查询参数来确定语言,比如
/foo/bar/page.py?lang=en
。把语言代码加到网址路径中,比如
/foo/bar/en/page.py
,然后可以选择使用mod_rewrite,这样路径中的那部分就可以作为查询参数传递给你的脚本。
4
原则上,你可以使用 Content-Language 和 Vary 这两个响应头,以及 Accept-Language 这个请求头,来控制缓存的行为,避免给用户提供错误的语言版本。
不过在实际使用中,浏览器里的 Accept-Language 经常设置不正确,这就是为什么大多数网站不太依赖它,或者至少会提供一个备用的方法。缓存对 Vary 头的尊重程度也可能不太可靠,但我不太确定。使用特定语言的 URL 绝对是一个实用的方法,这样可以避免缓存带来的潜在问题。