Rails 7应用本地化插值失效问题排查
Rails 7本地化插值不生效的问题解决
错误原因
- 本地化YAML文件中,插值占位符不能直接包含Ruby方法调用(如
park.distance.round(0)),I18n系统仅识别简单变量名作为占位符。 - 调用
t方法时未传递对应插值参数,导致占位符无法被实际值替换。
修正步骤
修改本地化配置文件
打开config/locales/en.yml,将占位符改为简单变量名:en: parks: _park_cards: km_away: "%{distance} km away"调整视图中的
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
相关产品推荐
相关产品推荐

