如何解决如何用翻译键作为变量来调用翻译?
我想显示一个翻译,其中迭代中的当前项目是翻译键。
在我的模型中,我有:
def self.topics
[ "topic_birds","topic_trees" ]
end
在我看来:
Book.topics.each do |topic|
...
<p><%= t(topic) %></p>
...
end
在我的YML文件中
topic_birds: 'Birds'
topic_trees: 'Trees'
代替返回:
Birds
Trees
我的代码返回:
Topic Birds
Topic Trees
因此,在我的topic
语句中,翻译函数似乎无法正确接受或解释变量each
。而是返回键的格式化版本(大写的首字母和空格),而不是YML文件中的转换。
解决方法
当在您的语言yml文件中找不到指定的键时,Rails翻译帮助器的默认行为是使用指定的键作为值。这似乎就是您所遇到的。
如果检查视图的HTML输出,您将看到“ translated”值包装在具有特殊translation_missing
类和标题的元素中,例如:
<span class="translation_missing" title="translation missing: en.topic_birds">Topic Birds</span>
提示:您可以通过设置ActionView::Base.raise_on_missing_translations = true
来导致缺少的翻译,从而引发错误。
根据您提供的信息,我猜测yml语言文件的结构正确,因此可能的问题是,topic_birds
和topic_trees
键在与在应用中设置。
例如,如果您有一个如下所示的en.yml文件:
en:
topic_birds: 'Birds'
topic_trees: 'Trees'
...但应用程序的语言环境设置为de
,那么您将遇到所描述的问题。
您可以使用I18n.locale = :en
设置语言环境。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。