如何存储在Rails中不同视图之间共享的翻译?

时间:2013-10-05 11:14:19

标签: ruby-on-rails ruby-on-rails-3 internationalization translation rails-i18n

我正在使用翻译文件来管理我的Rails应用程序的各种语言:

fr:
  books:
    index:
      title: "Livres"

存储多个视图中显示的title Rails方式是什么?

这根本不是DRY,因此不是我想要的:

fr:
  books:
    index:
      title: "Livres"
    new:
      title: "Livres"
    edit:
      title: "Livres"

现在我正在做这样的事情:

fr:
  books:
    title: "Livres"

但这是惯例吗?

我没有在那里指定任何观点的名称,所以我想知道这是不错的做法。

感谢您的任何意见。

2 个答案:

答案 0 :(得分:1)

说,您需要存储图书模型的翻译。你应该将它们存储在:

en.active_record.models.book

并且,所有书籍属性都应该在:

en.active_record.attributes.book.title

保留每个视图的翻译可能不是一个好主意:

1)正如你所指出的那样,它不是DRY。

2)翻译需要很长时间才能在内存中加载。因此,更多的会增加服务器的启动时间。

答案 1 :(得分:0)

我通常喜欢为视图添加共享部分,因此您仍然可以使用速记。

fr:
 books:
   shared: &shared
    title: Livres
    thing_with_variable: "%{count} things"
   index:
    <<: *shared
    thing: thing
   new:
    <<: *shared
    other_thing: other thing
   edit:
    <<: *shared

然后在索引,新等等。视图中你可以使用速记一样。

<%= translate('.title') %>
<%= translate('.thing_with_variable', count: 2) %>