4

我不断收到“缺少翻译: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)

如果我将行移出布局:应用程序:嵌套并进入 .yml 文件的根层次结构(当然从 t 方法中删除句点),那么一切都会翻译。一旦我将它们移回布局下:应用程序:我再次缺少翻译。

有什么问题?我正在使用 Rails 3.2.7

编辑1:刚刚尝试使用 <% t('layouts.application.title') %> 但仍然说翻译丢失。

编辑 2:如果我将 application.html.erb 复制或重命名为不同的名称(并相应地更改 *.yml 文件),则会找到解决方法。
如果我开始一个新项目,翻译在 application.html.erb 中工作得很好。但是在当前项目中:只要我使用 application.html.erb(即使测试内容很少),我仍然会丢失翻译。

4

2 回答 2

4

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

已解决:我可能会补充说非常愚蠢。
确保您没有使用制表符 ('\t') 来分隔文件中的文本。
显然,它无法使用制表符正确编译。

于 2013-07-07T20:31:41.927 回答
0

我今天遇到了完全相同的问题,经过调试会话后,我找到了问题的根源。我敢打赌这也是你的问题,因为这对你的解决方法也很有意义,而且这个问题不会发生在一个全新的项目上。你碰巧有等级制度吗

en:
  layouts:
    application:

在文件的其他地方定义yml

我在定义

en:
  layouts:
    header:
      language: "Language"

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

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

希望这能解决您的问题!

于 2013-03-05T00:17:58.077 回答