我已经开始使用Rails ActionCable向用户发送消息,而无需重新加载页面。我的网站全部翻译成多种语言,我无法找到解决以下问题的方法:
ActionCable.server.broadcast 'user_last_seen_at_refresh', {
user_partial: Admin::UsersController.render(partial:"user", locals: { u:u }),
user_id:u.id
}
当我向某些用户广播消息时,他们需要查看已翻译的部分内容。这不是。部分被翻译为英语,这是默认语言环境。一个解决方案'我能想到的是:
I18n.available_locales.each do |l|
I18n.with_locale(l) do
ActionCable.server.broadcast "user_last_seen_at_refresh_#{l}", {
user_partial: Admin::UsersController.render(partial:"user", locals: { u:u }),
user_id:u.id
}
end
end
并根据他们的语言订阅我的用户,但这并不像Rails的方式。
有人比这更好吗? THX!
答案 0 :(得分:0)
执行此操作时:
I18n.available_locales.each do |l|
I18n.with_locale(l) do
ActionCable.server.broadcast "user_last_seen_at_refresh_#{l}", {
user_partial: Admin::UsersController.render(partial:"user", locals: { u:u }),
user_id:u.id
}
end
end
您实际上是在所有可用的区域设置中为用户进行相同的广播呼叫。
我认为您想要的是将广播发送给用户喜爱的语言环境。对?为此,(假设您有一些字段/方法来访问用户的区域设置),请按如下所示进行更改:
I18n.with_locale(u.locale) do
ActionCable.server.broadcast "user_last_seen_at_refresh", {
user_partial: Admin::UsersController.render(partial:"user", locals: { u:u }),
user_id:u.id
}
end