如何根据用户个人资料设置语言?

时间:2016-05-11 19:08:55

标签: ruby-on-rails ruby-on-rails-4 internationalization rails-i18n

我能够为我的项目创建翻译。我插入代码让浏览器记住用户选择的语言,但是,当我切换到另一个设备,或手机或我的应用程序发送电子邮件时,它默认为英语。那么如何在配置文件中使用用户选择语言,以便它能记住外发电子邮件中的所选语言?我正在使用设计

我的应用程序控制器

class ApplicationController < ActionController::Base

before_action :set_locale

def set_locale
  if cookies[:educator_locale] && I18n.available_locales.include?(cookies[:educator_locale].to_sym)
    l = cookies[:educator_locale].to_sym
  else
    l = I18n.default_locale
    cookies.permanent[:educator_locale] = l
  end
  I18n.locale = l
end
end

我的config.ru部分

get '/change_locale/:locale', to: 'settings#change_locale', as: :change_locale

1 个答案:

答案 0 :(得分:1)

您目前只是使用Cookie来跟踪所选的区域设置,不同的设备或浏览器将拥有自己的Cookie,因此它们会回退到默认值。

您必须在服务器端(用户配置文件)为用户保留所选区域设置,然后检查ApplicationController是否有登录用户(设备提供助手,据我记得),如果所以将I18.locale设置为此存储值,否则您可以回退到当前基于cookie的解决方案(对于未登录的用户)。

另一种(后备)方法是通过浏览器特定标头猜测区域设置,该标头将随请求一起发送。假设浏览器区域设置设置为法语,用户可能还希望以法语查看内容。