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

Rails 7应用本地化插值失效问题排查

Rails 7本地化插值不生效的问题解决

错误原因

  • 本地化YAML文件中,插值占位符不能直接包含Ruby方法调用(如park.distance.round(0)),I18n系统仅识别简单变量名作为占位符。
  • 调用t方法时未传递对应插值参数,导致占位符无法被实际值替换。

修正步骤

  1. 修改本地化配置文件
    打开config/locales/en.yml,将占位符改为简单变量名:

    en:
      parks:
        _park_cards:
          km_away: "%{distance} km away"
    
  2. 调整视图中的t方法调用
    在app/views/parks/_park_cards.html.erb中,传入计算好的距离值作为插值参数:

    <%= t("parks._park_cards.km_away", distance: park.distance.round(0)) %>
    

说明

Rails I18n的插值逻辑是:先定义包含占位符的字符串模板,再通过t方法的第二个参数传入实际变量值。业务逻辑(如距离取整)应在视图/控制器中处理,而非直接写在YAML配置里,既符合职责分离原则,也能保证插值正常生效。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.27 03:18:11