Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ruby-on-rails-3/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails Rails国际化(i18n):除了layouts/application.html.erb之外的所有内容_Ruby On Rails_Ruby On Rails 3_Internationalization_Ruby On Rails 3.2_Rails I18n - Fatal编程技术网

Ruby on rails Rails国际化(i18n):除了layouts/application.html.erb之外的所有内容

Ruby on rails Rails国际化(i18n):除了layouts/application.html.erb之外的所有内容,ruby-on-rails,ruby-on-rails-3,internationalization,ruby-on-rails-3.2,rails-i18n,Ruby On Rails,Ruby On Rails 3,Internationalization,Ruby On Rails 3.2,Rails I18n,我不断收到“翻译缺失:恩。版面。应用程序。标题” 对于标题或我试图在app/views/layouts/application.html.erb文件中翻译的任何项目 config/locales/en.yml en: layouts: application: title: "My Catalog" home: "Home" store: "Store" faq: "FAQ" contact: "Con

我不断收到“翻译缺失:恩。版面。应用程序。标题” 对于标题或我试图在app/views/layouts/application.html.erb文件中翻译的任何项目

config/locales/en.yml

en:

  layouts:
    application:
      title:  "My Catalog"
      home:  "Home"
      store:   "Store"
      faq:      "FAQ"
      contact:  "Contact"
      about:    "About"
app/views/layouts/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)

如果我将layouts:application:nest中的行移到.yml文件的根层次结构中(当然从t方法中删除句点),那么所有内容都会转换。 一旦我把它们移回到layouts:application:下,我就会再次丢失翻译

有什么不对劲吗? 我使用的是Rails 3.2.7

编辑1:刚刚尝试使用,但仍然表示缺少翻译

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

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

en:
  layouts:
    application:
在您的
yml
文件中的其他地方定义

我在定义

en:
  layouts:
    header:
      language: "Language"

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


希望这能解决你的问题

更新:离开这个项目有一段时间了,但解决了这个问题

已解决:我可能会补充说,这相当愚蠢。
确保不使用制表符('\t')在文件中分隔文本。

显然,它无法使用制表符正确编译。

如果将翻译保留在嵌套层次结构中(不要将其移动到根层次结构),并在视图ie
t('layouts.application.title')中使用完整查找而不是延迟查找,您是否可以澄清,仍然会出现缺少翻译的错误
?感谢您的回复。它仍然让我失去了翻译。更新原始帖子。奇怪…你在用Spork吗?如果是这样,您是否重新启动它以确保它重新加载在locales目录下所做的更改?是的。每次更改后重新启动webrick进行确认。只要使用layouts:application:lookup,就会出现相同的错误。如果我将application.html.erb复制到另一个文件并在en.yml中的layouts:hierarchy下使用新的文件名,我找到了一个解决方法,那么它就可以工作了。不知道为什么会发生这种情况,因为如果我从头开始一个新项目,我没有任何问题。不,我没有在其他地方定义它,但是thx。当然!很高兴你整理了这张Outpun便笺:硅谷秀中关于制表符与间隔的辩论在这里很好地发挥了作用!
en:
  layouts:
    header:
      my_profile: "My profile"