用于大量文本(和一些html)国际化的rails策略

时间:2012-02-07 07:42:29

标签: ruby-on-rails internationalization

我正在创建一个英文,中文和韩文网站。某些页面上有大部分布局和文本,例如“关于”页面。此页面将包含许多标题,许多文本段落和一些布局。

我的网站国际化的推荐方法是什么?我见过的所有例子都是针对按钮/链接等的短文本或文本。

我唯一的选择是在我的语言环境yaml文件中拥有大量的键/值对吗?或者有更好的方法吗?目前我的yaml中有一个键/值,键的结尾是_html,所以我可以在键中使用html但是它必须在一行上,所以它非常难看,难以维护并且容易出错。

1 个答案:

答案 0 :(得分:43)

如果您想本地化大块代码和内容,您可以简单地使用partials。部分尊重I18n约定,视图和模板也是如此。

# app/views/about.html.erb
<%= render :partial => 'about_contents' %>

# app/views/_about_contents.en.html.erb
<h1>About us</h1>
<p>Some large content...</p>

# app/views/_about_contents.fr.html.erb
<h1>A propos</h1>
<p>Un contenu quelconque...</p>

对于标签,小文本,日期格式等,您可以继续使用I18n.t /区域设置文件。

更新:

如果要本地化的内容包含格式代码,您还可以使用content_for从部分中生成文本内容,并避免布局和共享标记的代码重复。

# app/views/about.html.erb
<%= render :partial => 'about_contents' %>
<div class="whatever">
  <p><%= yield :content_one %></p>
</div>
</div class="whatever_two">
  <p><%= yield :content_two %></p>
</div>

# app/views/_about_contents.en.html.erb
<% content_for :content_one do %>
Some large content...
<% end %>
<% content_for :content_two do %>
Some other large content...
<% end %>

# app/views/_about_contents.fr.html.erb
<% content_for :content_one do %>
Un contenu quelconque...
<% end %>
<% content_for :content_two do %>
Un autre contenu quelconque...
<% end %>