迁移后Rails I18n中ActiveRecord模型新增字段翻译失效求助
Rails新增字段I18n翻译未生效的解决方法
以下是针对你遇到的问题的具体排查和解决步骤:
检查YAML语法缩进
YAML对缩进要求极其严格,新增的fieldThree行必须和同层级的fieldOne、fieldTwo保持完全一致的缩进(只能用空格,不能混用制表符)。正确的格式应该是:en: activerecord: attributes: circus_animal: fieldOne: Breed fieldTwo: Trainer fieldThree: Age可以手动检查缩进是否统一,或者用本地YAML校验工具确认文件没有语法错误。
重启Rails服务器
Rails启动时会把I18n翻译文件加载到内存,新增的翻译内容不会实时生效。关闭当前运行的服务器进程,重新执行rails s启动服务后再测试。直接在控制台验证翻译键
打开Rails控制台(rails c),执行以下命令测试翻译是否能被正确读取:I18n.t('activerecord.attributes.circus_animal.fieldThree')如果返回
"Age",说明翻译配置本身没问题;如果返回键字符串本身(activerecord.attributes.circus_animal.fieldThree),说明键路径拼写错误或者YAML文件加载失败。确认视图标签的调用方式
确保视图中是用Rails表单辅助方法生成标签,比如:<%= f.label :fieldThree %>只有使用这类辅助方法,Rails才会自动关联I18n翻译。如果是手动编写的标签,需要显式调用翻译方法:
<%= label_tag :fieldThree, t('activerecord.attributes.circus_animal.fieldThree') %>清除I18n缓存
如果重启服务器后仍未生效,可在控制台执行I18n.reload!强制重新加载所有翻译文件;也可以删除tmp/cache目录下的所有缓存文件,再重启服务器。
内容的提问来源于stack exchange,提问作者JohnRDOrazio
相关产品推荐
相关产品推荐

