我正在创建一个英文,中文和韩文网站。某些页面上有大部分布局和文本,例如“关于”页面。此页面将包含许多标题,许多文本段落和一些布局。
我的网站国际化的推荐方法是什么?我见过的所有例子都是针对按钮/链接等的短文本或文本。
我唯一的选择是在我的语言环境yaml文件中拥有大量的键/值对吗?或者有更好的方法吗?目前我的yaml中有一个键/值,键的结尾是_html,所以我可以在键中使用html但是它必须在一行上,所以它非常难看,难以维护并且容易出错。
答案 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 %>