Jagster
(Jakke Lehtonen)
1
又是一个非常基础的问题。在 app.yml 中,我将 fi 设置为默认区域设置。但这是否比仅仅为所有人设置默认值有更多作用?
如果有,用户是否会一直看到默认语言(现在是 fi)的内容,直到更改了“允许用户区域设置”?
那么“从 accept language header 设置区域设置”呢?如果有人设置为 en_US,那么就会提供英文版本吗?这是否意味着默认区域设置只是一个建议,如果 Accept-Language 是其他值,它就会被覆盖?
我之所以问这个问题,是因为我的新网站主要面向美国市场,并且需要一个论坛。但我认为它不会引起足够的关注,以至于值得投入启动论坛所需的所有工作。因此,我曾考虑过一个解决方案,即引导那些美国/全球访客进入一个专门的类别。
但我的论坛其他部分都是芬兰语,如果 Accept-Language 不改变默认区域设置,那将行不通。
(部分原因是我希望那个翻译器功能有一天能正常工作
)。
我知道,这不算是一个真正的支持问题,但我正在尝试避免将其归入“通用”类别……
1 个赞
虽然我对这方面了解不多,但鉴于目前还没有其他回复……
我认为在 app.yml 中添加默认区域设置会覆盖你在站点设置中为“默认区域设置”所做的任何设置(并且还会将其从设置页面中移除)。但这只会是默认设置,你可以让用户选择(或让他们的浏览器选择)一个更适合他们的替代方案。
希望这有帮助,如果没有,这也可以作为一个有用的顶帖,看看我们是否能找到更有知识的回复。

riking
(Kane York)
4
ApplicationController#with_resolved_locale 中有两种逻辑:已登录用户和未登录用户。
未登录用户 (1) 从请求设置语言环境,然后 (2) 如果未检测到语言环境,则使用“默认语言环境”站点设置。
优先级是 URL 中的 ?lang=,然后是 locale cookie,然后是 Accept-Language(如果启用了各自的站点设置)。
已登录用户的逻辑更简单:用户偏好设置,然后如果用户偏好设置被禁止,则使用“默认语言环境”。
在所有情况下,如果已解析的语言环境已从 Discourse 服务器卸载,则使用 en。(据我所知,这主要在单元和集成测试中触发。)
locale = SiteSettings::DefaultsProvider::DEFAULT_LOCALE if !I18n.locale_available?(locale)
所以,总而言之,它的作用是:
- 这是没有
Accept-Language 标头的匿名请求的语言。
- 如果您不允许用户选择自己的语言,或者用户尚未设置首选语言环境,则始终会使用该语言。
3 个赞