Rails国际化(i18n):除了layouts / application.html.erb之外的所有翻译

时间:2013-01-01 07:25:52

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

我一直在“翻译失踪:en.layouts.application.title” 对于我尝试在app / views / layouts / application.html.erb文件中翻译的标题或任何项目。

配置/区域设置/ en.yml

en:

  layouts:
    application:
      title:  "My Catalog"
      home:  "Home"
      store:   "Store"
      faq:      "FAQ"
      contact:  "Contact"
      about:    "About"

应用/视图/布局/ application.html.erb

<div id="banner">
  <% t('.title') %>
</div>
<div id="nav_menu" class="sidebar_menu">
  <a href="/"><%= t('.home') %></a>
  <a href="/store"><%= t('.store') %></a>
  <a href="/faq"><%= t('.faq') %></a>
  <a href="/contact"><%= t('.contact') %></a>
  <a href="/about"><%= t('.about') %></a>
</div>

视图中的所有翻译都有效,但布局中的任何内容都显示其缺失。 我使用的是en.yml,fr.yml和es.yml,每个都是相同的问题(分别是fr.layouts.application.title和es.layouts.application.title)

如果我将这些行移出布局:application:nest并进入.yml文件的根层次结构(当然从t方法中删除句点)然后一切都会翻译。 一旦我在布局下移回它们:应用程序:我再次找不到翻译。

可能有什么不对? 我正在使用Rails 3.2.7

编辑1:刚尝试使用&lt;%t('layouts.application.title')%&gt;但仍然说翻译失踪。

编辑2:如果我将application.html.erb复制或重命名为其他名称(并相应地更改* .yml文件),则会找到解决办法。
如果我在application.html.erb中启动新项目翻译工作正常。 但是在 当前项目 中:只要我使用的是application.html.erb(即使测试内容最少),我仍然会错过翻译。

2 个答案:

答案 0 :(得分:3)

更新:离开这个项目已有一段时间了,但想出了问题......

解答:我可能会补充相当愚蠢 请确保没有标签('\ t')来区分文件中的文字。
显然,它无法使用制表符正确编译。

答案 1 :(得分:0)

我今天运行完全相同的问题,在调试会话后我找到了问题的根源。我敢打赌这也是你的问题,因为它对你的解决方法和一个全新的项目没有发生的问题也有意义。你碰巧有层次结构

en:
  layouts:
    application:

yml文件的其他位置定义了哪些内容?

我正在定义

en:
  layouts:
    header:
      language: "Language"

en:
  layouts:
    header:
      my_profile: "My profile"

在两个不同的地方,所以我想译者会寻找第一个(并且假设是唯一的)键组合的出现而永远找不到另一个......

希望这能解决您的问题!