Rails文档说:
您可能想将选择的区域设置存储在会话或cookie中。但是,不要这样做。区域设置应该是透明的,并且是URL的一部分。这样你就不会打破人们对网络本身的基本假设:如果你发送一个URL给朋友,他们应该看到和你一样的页面和内容。用一个好听的词来形容就是你在休息。在Stefan Tilkov的文章中阅读更多关于RESTful方法的内容。有时这条规则也有例外,这些例外将在下面讨论。
但是在上面的几个屏幕中,它教我们如何从用户首选项设置区域设置。等于从cookie中设置。
我在Django文档中没有看到这样的警告。虽然你可能可以避免它,但将其存储在cookie中似乎是一种推荐的方法。
是否可以显示从cookie中获取的语言页面?吃还是不吃?
如果可以,我该怎么处理url呢?我是否仍然需要不同语言的不同url,即使语言被cookie覆盖?
乌利希期刊指南澄清一下,我并没有暗示Rails和Django哪个更好。这只是我为了找到答案而研究的两个框架。事实上,Django建议将其存储在cookie中是我的猜测。现在我想了想,可能没有。它只支持两个选项。
此外,通过"不同语言的不同url"。我的意思是:
- 语言由url决定。每个版本的页面都有自己的url (en.example.com,或example.com/en,或example.com/?lang=en)。
我认为这里有几个问题。首先,区域设置cookie问题。
要问的主要问题是,您正在处理的URL是特定于某个用户的,还是可能由多个用户共享或查看的内容。如果它是特定于用户的(他们的设置页面,或者他们只能在登录后看到的其他私有页面),那么将区域设置作为他们设置的一部分是完全有意义的。Cookie在这里很合理。
但是,如果区域设置是多个用户可以看到的页面的一部分,那么您希望将区域设置作为URL的一部分包含。因此,如果我发送给你https://blah.blah.foo/check/this/out?response=foo〈EN,你将完全看到我所看到的。
至于为不同的语言处理不同的url,您通常保持相同的路由/视图,并依靠rails的I18N来处理多种语言。但就像其他任何事情一样,你可以这样做,但这对你的应用程序来说是最有意义的:)