You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Rails控制器外渲染视图时i18n国际化失效问题求助

解决控制器外渲染视图时I18n失效的问题

当你通过ABCController.render在其他控制器动作里渲染视图时,渲染上下文默认不会继承当前请求的locale设置,这就是始终只显示英文的核心原因。可以通过以下两种方式解决:

方法1:直接在render参数中指定locale

调用render时显式传入当前请求的locale值:

ABCController.render :index, assigns: {myvar: '12345'}, locale: I18n.locale

方法2:创建自定义Renderer并设置locale

先初始化带有locale配置的Renderer实例,再用它渲染视图:

renderer = ABCController.renderer.new(locale: I18n.locale)
renderer.render :index, assigns: {myvar: '12345'}

原理说明:Controller.render会生成独立的渲染环境,默认使用Rails配置的默认locale(通常为英文)。显式传入当前请求的I18n.locale,就能让视图使用正确的语言文件,和正常访问控制器时的行为保持一致。

内容的提问来源于stack exchange,提问作者user2185938

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.03 12:39:27