如何根据用户配置文件设置语言?
How to set language based on user profile?
我能够为我的项目创建翻译。我插入代码让浏览器记住用户 selected 语言,但是,当我切换到另一个设备或 phone 或当我的应用程序发送电子邮件时,它默认为英语。那么我怎样才能在配置文件中使用用户 select 语言,以便它在外发电子邮件中记住 selected 语言?我正在使用设计
我的应用控制器
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 的解决方案(对于未登录的用户)。
另一种(回退)方法是通过浏览器特定 headers 猜测语言环境,这将与请求一起发送。比如说,如果浏览器区域设置为法语,则用户可能还希望以法语查看内容。
我能够为我的项目创建翻译。我插入代码让浏览器记住用户 selected 语言,但是,当我切换到另一个设备或 phone 或当我的应用程序发送电子邮件时,它默认为英语。那么我怎样才能在配置文件中使用用户 select 语言,以便它在外发电子邮件中记住 selected 语言?我正在使用设计
我的应用控制器
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 的解决方案(对于未登录的用户)。
另一种(回退)方法是通过浏览器特定 headers 猜测语言环境,这将与请求一起发送。比如说,如果浏览器区域设置为法语,则用户可能还希望以法语查看内容。