如何有选择地停用Rails I18n平移缺失跨度?

问题描述 投票:0回答:1

在我的Rails 5.2应用程序中,除Admin区域外,几乎所有UI都是使用t()国际化的。 “翻译缺失”范围通常会破坏布局,但我认为这是值得付出的代价,以便知道何时可能拼错了密钥或未提交文件或其他东西。但是,在某个地方,跨度实际上是行不通的,这就是人们在我的网上论坛中自我描述的角色。角色可以是en.yml中预定义的字符串,例如“ coordinator”,“ treasurer”等,但也可以是写入文件,例如“ minister of awesome”。因此执行t("groups.roles." + role)无效,因为“翻译缺失”范围使布局混乱。这在先前版本的Rails中不是问题,因为在生产环境中自动禁用了“缺少翻译”范围,并且只显示了键的最后一部分,即我在此想要的功能。在Rails 5.2中,跨度也会在生产中显示出来,这是一个问题,至少对于此部分而言是这样。

ruby-on-rails internationalization ruby-on-rails-5 rails-i18n
1个回答
0
投票

我浏览了有关如何在生产中禁用这些错误消息的所有答案,建议的解决方案似乎适用于Rails 4或不起作用。或者它们具有停用后备翻译的副作用,这对我来说是不可接受的折衷方案,因为我的大多数应用程序都需要英语后备。覆盖或扩展TranslationHelper似乎是一项艰巨的任务,特别是因为我只希望在生产环境中删除跨度(就像以前那样工作)。因此,就我而言,就目前而言,我决定不进行完全覆盖,而仅在希望丢失缺少翻译的问题的一个地方更改了帮助程序:

def human_role(role)
  str = t("groups.roles." + role)
  if str.include?("translation missing")
    role
  else 
    str
  end
end
© www.soinside.com 2019 - 2024. All rights reserved.