Ruby on rails rails 3,特定于用户的本地化:以用户';她喜欢的语言
当我们的应用程序发送短信时,我们想让用户选择指定他们的首选语言 以西班牙语为例,我了解了如何向config/locales添加一个新的locale yml文件 我还了解了如何在我的应用程序中用:STOP_opt_out替换任何硬编码字符串,如“text STOP to opt out” 我没有看到的是如何逐个用户选择使用的语言 特别是如果我的代码当前为: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
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