Rails持久化语言环境

jpe*_*thy 7 ruby-on-rails internationalization ruby-on-rails-3

我即将开始为我正在开发的Rails应用程序添加I18n支持.过去,我已经从URL设置了区域设置值.我只是想知道坚持使用语言环境有多糟糕?

所以不是这样的:

before_filter :set_locale

def set_locale
  I18n.locale = params[:locale] || I18n.default_locale
end
Run Code Online (Sandbox Code Playgroud)

做点什么

before_filter :set_locale

def set_locale
  I18n.locale = current_user.try(:locale) || I18n.default_locale
end
Run Code Online (Sandbox Code Playgroud)

看起来FB坚持了本地化,这种架构的权衡取舍是什么?怎么会影响SEO的东西?

谢谢!

Zub*_*bin 9

我遇到了这些问题并最终使用了这个策略:

  • URL中的区域设置(允许页面缓存和特定语言的直接链接)
  • 在用户cookie中存储区域设置

如果URL中不存在区域设置,请尝试(按顺序):

  • 从cookie中检索
  • 从地理位置猜测
  • 猜测从浏览器标题接受语言
  • 回退到应用默认值

希望有所帮助; 如果你想要阐述任何要点,请告诉我.