Ruby on rails rails 3,特定于用户的本地化:以用户';她喜欢的语言

Ruby on rails rails 3,特定于用户的本地化:以用户';她喜欢的语言,ruby-on-rails,localization,Ruby On Rails,Localization,当我们的应用程序发送短信时,我们想让用户选择指定他们的首选语言 以西班牙语为例,我了解了如何向config/locales添加一个新的locale yml文件 我还了解了如何在我的应用程序中用:STOP_opt_out替换任何硬编码字符串,如“text STOP to opt out” 我没有看到的是如何逐个用户选择使用的语言 特别是如果我的代码当前为: msg_out = "Thank you!" 国际化之后,我在多个语言环境yml文件中定义了:thank_you 如果在我的用户记录中有us

当我们的应用程序发送短信时,我们想让用户选择指定他们的首选语言

以西班牙语为例,我了解了如何向config/locales添加一个新的locale yml文件

我还了解了如何在我的应用程序中用:STOP_opt_out替换任何硬编码字符串,如“text STOP to opt out”

我没有看到的是如何逐个用户选择使用的语言

特别是如果我的代码当前为:

msg_out = "Thank you!"
国际化之后,我在多个语言环境yml文件中定义了
:thank_you

如果在我的用户记录中有user.locale=“en”或“sp”(或者我应该枚举区域设置0,1,2?)

我将如何执行特定于用户的任务

msg_out = t :thank_you

这将适用于在当前会话中为该用户创建的每条消息?

如果您的所有消息都是在用户使用您的站点时生成的(即,所有消息都作为对用户操作的响应发送),您只需在应用程序控制器()上的before_筛选器中从用户模型中读取首选区域设置即可:

如果您发送的是一般性的群发电子邮件(即,没有针对每个用户的自定义设置),则可以通过加载按区域设置分组的用户列表,然后一次性向所有用户发送一条消息,从而大大加快上述代码的速度


希望这有帮助

如果您的所有消息都是在用户使用您的站点时生成的(即,所有消息都作为对用户操作的响应发送),则您可以在应用程序控制器()上的before_筛选器中从用户模型中读取首选语言环境:

如果您发送的是一般性的群发电子邮件(即,没有针对每个用户的自定义设置),则可以通过加载按区域设置分组的用户列表,然后一次性向所有用户发送一条消息,从而大大加快上述代码的速度

希望这有帮助

我只是偶然发现,如果你只翻译一行,可能会更方便。您可以像这样设置一个一次性区域设置:
I18n.t('my.I18n.key',:locale=>:de)
而我只是偶然发现了,如果您只翻译一行,这可能会更方便。您可以这样设置一个一次性区域设置:
I18n.t('my.I18n.key',:locale=>:de)
class ApplicationController < ActionController::Base
    before_filter :load_user
    before_filter :load_locale
    #...

    def load_locale
        I18n.locale = (@user && @user.locale)? @user.locale : I18n.default_locale
    end

    #...
end
User.find_each do |user|
    I18n.locale = user.locale || I18n.default_locale
    # Send your message...
end