【问题标题】:Is it okay to display a page in a language taken from a cookie? [closed]是否可以以从 cookie 中获取的语言显示页面? [关闭]
【发布时间】:2021-05-25 21:59:26
【问题描述】:

Rails documentation 说:

您可能很想将所选语言环境存储在会话或 cookie 中。但是,不要这样做。语言环境应该是透明的并且是 URL 的一部分。这样您就不会破坏人们对网络本身的基本假设:如果您将 URL 发送给朋友,他们应该会看到与您相同的页面和内容。一个花哨的词是你是 RESTful 的。在 Stefan Tilkov 的文章中阅读有关 RESTful 方法的更多信息。有时,这条规则也有例外情况,下文将对此进行讨论。

但是couple of screens above,它教如何根据用户偏好设置区域设置。这相当于从 cookie 中设置它。

我在 Django 文档中没有看到这样的警告。尽管您可能可以避免它,但storing it in a cookie 似乎是一种推荐的方式。

是否可以以从 cookie 中获取的语言显示页面?吃饼干还是不吃?

如果没问题,我该怎么处理这些网址?我是否仍然需要不同语言的不同网址,即使语言被 cookie 覆盖?

UPD 为了清楚起见,我并没有暗示 Rails 或 Django 哪个更好。只是这些是我检查以找到答案的两个框架。 Django 建议将其存储在 cookie 中的事实是我的猜测。现在想来,应该不会吧。它只支持这两个选项。

另外,“不同语言的不同网址”是指:

  • 语言由 url 决定。页面的每个版本都有自己的网址(en.example.com、example.com/en 或 example.com/?lang=en)。

【问题讨论】:

  • 根据谁确定?
  • @TylerH 到好的设计原则。

标签: ruby-on-rails django cookies


【解决方案1】:

我认为这里有几个问题。首先,语言环境 cookie 问题。

要问的主要问题是,您使用的 URL 是特定于某个用户,还是可能由多个用户共享或查看的。如果它是特定于用户的(他们的设置页面,或者他们只能在登录后看到的其他私人页面),那么语言环境是他们设置的一部分是完全合理的。 Cookie在这里很合理。

但是,如果区域设置是多个用户会看到的页面的一部分,那么您希望将区域设置作为 URL 的一部分包含在内。这样,如果我向您发送https://blah.blah.foo/check/this/out?response=foo&lang=EN,您就会看到我所看到的。

就处理不同语言的不同 URL 而言,您通常保持相同的路由/视图并依靠 rails 的 I18N 来处理多种语言。但就像其他一切一样,您可以这样做,但对您的应用最有意义:)

【讨论】:

  • 我的意思是“不同语言的不同网址”以与框架无关的方式。网站是否必须定义/响应包含语言的 url(如果可以使用 cookie)?您在第一部分中介绍过。
猜你喜欢
  • 2012-02-24
  • 2011-03-27
  • 1970-01-01
  • 1970-01-01
  • 2019-09-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-03-28
相关资源
最近更新 更多