1

以下是法语菜单的示例,我还将提供另外五种语言的菜单:

<a href="/<%= @lang %>/">Jeux</a>
<a href="/<%= @lang %>/get-the-player">Obtenir le lecteur</a>
<a href="/<%= @lang %>/about">À propos</a>
<a href="/<%= @lang %>/faq">FAQ</a>
<a href="/<%= @lang %>/contact">Contact</a>

目前菜单位于​​相关页面(.html.erb)中,使用下面列出的代码

<%= content_for :menu do %>    
    <a href="/<%= @lang %>/">Jeux</a>
    <a href="/<%= @lang %>/get-the-player">Obtenir le lecteur</a>
    <a href="/<%= @lang %>/about">À propos</a>
    <a href="/<%= @lang %>/faq">FAQ</a>
    <a href="/<%= @lang %>/contact">Contact</a>
<% end %>

完成上述操作后,我就获得了 application.html.erb 的参考

<%= yield :menu %>

对于其他语言,它可以以完全相同的方式完成,但是,有没有一种方法可以避免重复代码。也许让控制器去寻找它并将它呈现在确切的位置?请帮忙,

提前致谢!

==================================================== ==========================

    **CHECK BELOW FOR SOLUTIONS THAT I HAVE PROVIDED**
4

3 回答 3

3

查看内置的国际化 (i18n) API

编辑:另一种方法是使用本地化视图,如ruby​​ on rails i18n guides 中所述。例如,您可以将文件命名index.fr.html.erbindex.en.html.erb. 然后,根据您的I18n.locale设置,呈现适当的视图。

于 2012-11-06T16:26:57.363 回答
1

如果您在自己的网站上有很多这样的事情要做,我建议您看看 Google Closure Templates (Soy)。它有一个本地化框架,您可以使用它来实现这一点。

如果您使用它,那么您编写一个 Soy 模板来生成菜单和(站点的其他部分)并使用本地化功能为用户显示适当的语言。

于 2012-11-06T16:37:26.677 回答
0

这是需要做的。在我的 _header.html.erb(或 application.html.erb,具体取决于您的操作方式)上,我创建了如下所示的 if 语句:

<% if params[:lang]=="es" %>
    <a href="/<%= @lang %>/">Jeux</a>
    <a href="/<%= @lang %>/get-the-player">Obtenir le lecteur</a>
    ..........
    ..........
<% end %>


<% if params[:lang]=="en" %>
    <a href="/<%= @lang %>/">Games</a>
    <a href="/<%= @lang %>/get-the-player">Get the Player</a>
    ..........
    ..........
<% end %>

如果我/你愿意,你可以通过这个操作获得更多。是的,伙计们,您可以使用国际化 API 来做到这一点,但是这次我正在编辑一个大型应用程序,这可能会浪费更多时间,而且会降低工作效率。所以上面的源代码可能是另一种方式。:)。谢谢你们对这个问题的所有投入。

于 2012-11-07T15:03:43.147 回答