ruby-on-rails - 如何根据用户配置文件设置语言?

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

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

我的应用程序 Controller

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

最佳答案

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

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

另一种(后备)方法是通过将随请求发送的浏览器特定 header 来猜测区域设置。假设如果浏览器区域设置设置为法语,则用户可能还想查看法语内容。

关于ruby-on-rails - 如何根据用户配置文件设置语言?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37171369/

相关文章:

ruby-on-rails - 独立 Ruby 脚本中的 Ruby Gem

ruby-on-rails - 数据库迁移到 heroku 不起作用

ruby-on-rails - rails 4 : replace/delete uploaded file in edit view form

java - 一个 Selenium 测试脚本应该支持不同语言的网站

javascript - 如何在 prime ui 或 jquery datatable "columns"选项的 headerText 中包含 HTML 代码?

ruby-on-rails - Rails 3.2.13 - Gem::LoadError,无法激活 gem

ruby-on-rails - 在 Rails 的子目录中包含所有样式表

javascript - 显示 Rails 4 中所选类别的子类别

ruby-on-rails - Rails 4 Devise/Omniauth 电子邮件存在于数据库错误

objective-c - 显示韩文字符-iOS App