1

我想使用这里描述的 I18n 级联模块,但我无法让级联工作。

我有一个 YAML 文件,如下所示:

follows:
  every_x_day: "value here"
  ...
  main:
    ...

在follows/main view中,我为键'.every_x_day'调用t helper,它只是'follows.main.every_x_day'的缩写。当然没有找到这样的键,所以我希望级联接下来会寻找“follows.every_x_day”,但这不会发生。

我在这里看到了问题和答案:我添加了

I18n.backend.class.send(:include, I18n::Backend::Cascade)

到 application.rb。但是当我用 cascade: true 调用翻译助手时,它根本不会级联。该页面仅显示缺少翻译(洋红色背景上的键名)。

我也用这个i18n 补丁检查了它。它还表明没有发生级联搜索。它只是寻找最具体的键,没有找到任何东西,然后停止搜索。

任何想法是什么导致了这种行为?

4

2 回答 2

0

好的,所以我假设您的代码中有这样的内容:

<%= t('.every_x_day', cascade: true) %>

您是否完全确定,这'.every_x_day'开始寻找'follows.main.every_x_day'我在原始问题的答案中描述它的方式的关键是 I18n 的正常行为和视图中的惰性查找。所以,我会尝试的第一件事是将完整的密钥传递给助手:

<%= t('follows.main.every_x_day', cascade: true) %>

那么您至少可以确定您的原始查找路径是正确的。如果这不起作用,则不会加载级联模块。您是否将代码放入配置选项中?(见我的updated_answer)。

如果它仍然不起作用,请回到我身边,我们将尝试一起解决。

于 2013-09-20T10:34:20.940 回答
0

原来问题是由 I18n-monkeypatch 引起的(请参阅原始问题)。禁用monkeypatch 后,级联按应有的方式进行。这是我的粗心大意,显然我从未在没有猴子补丁的情况下测试过该应用程序。

无论如何,感谢您花时间帮助克拉芬博克。

于 2013-09-23T07:49:20.017 回答