多语言网站 - 不同语言需要唯一URL(以防缓存)?

1 投票
2 回答
627 浏览
提问于 2025-04-16 07:51

我开发了一个使用AppEngine/Python/Django的应用程序,目前支持西班牙语。现在我正在进行国际化,想要支持多种语言。这个应用基本上是一个约会网站,用户可以浏览其他人的个人资料并发送消息。在不同语言下查看个人资料时,某些文本(比如菜单等)会显示为所选语言,但用户自己生成的内容(比如个人资料或消息)会以原始语言显示,也就是用户写的时候用的语言。

我想问的是:对于同一页面,如果用不同语言显示,是否有必要使用不同的URL,还是可以用同一个URL来显示不同语言的内容?我特别担心如果我对多个语言使用同一个URL,可能会导致某些页面被缓存(比如被谷歌或者其他我不知道的代理缓存),这样用户看到的可能就是错误的语言。

有没有人知道这是个合理的担忧,还是我在担心一些根本不会发生的事情?

2 个回答

3

我不知道在Django中这个是怎么工作的,但从一般的网站开发角度来看,你可以:

  • 使用查询参数来确定语言,比如 /foo/bar/page.py?lang=en

  • 把语言代码加到网址路径中,比如 /foo/bar/en/page.py,然后可以选择使用mod_rewrite,这样路径中的那部分就可以作为查询参数传递给你的脚本。

4

原则上,你可以使用 Content-LanguageVary 这两个响应头,以及 Accept-Language 这个请求头,来控制缓存的行为,避免给用户提供错误的语言版本。

不过在实际使用中,浏览器里的 Accept-Language 经常设置不正确,这就是为什么大多数网站不太依赖它,或者至少会提供一个备用的方法。缓存对 Vary 头的尊重程度也可能不太可靠,但我不太确定。使用特定语言的 URL 绝对是一个实用的方法,这样可以避免缓存带来的潜在问题。

撰写回答