gpt4 book ai didi

ruby-on-rails - 结合 ActionCable 和 I18n

转载 作者:行者123 更新时间:2023-12-05 07:35:20 26 4
gpt4 key购买 nike

我已经开始使用 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 的方式。

还有比这更好的主意吗?谢谢!

最佳答案

当你这样做时:

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

关于ruby-on-rails - 结合 ActionCable 和 I18n,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49639751/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com