我在使用引擎的应用程序中遇到了奇怪的行为。应用程序的语言环境翻译文件会影响引擎的翻译文件。
为了使引擎的文件正常工作,我必须在应用程序中明确创建相同的文件。只需将它们命名为相同,在其中放置空的区域设置哈希就足够了。
这是我引擎的语言环境目录。我有.rb
翻译文件(不是.yml
):
# the directory:
engine/config/locale
|
-- en.rb
-- ru.rb
# Translation files. ru.rb is the same.
# en.rb
{
:en => {
:foo => {
:bar => "Bar",
},
},
}
我的引擎的观点我这样称呼翻译:
<%= t("foo.bar") %>
问题是我的托管应用程序中必须有完全相同的文件。如果应用程序的/config/locales/
目录为空(没有en.rb
和文件),那么即使引擎看起来如上(两个文件都存在且正确),ru.rb
我也会出错。I18n::InvalidLocaleData
/config/locales/
应用程序的这些翻译文件可以具有不同的内容,但它们必须存在并且必须具有相同的语言环境键(:en
或:ru
)。例如,这足以让引擎的文件正常工作:
# app's translation files. ru.rb is the same.
# en.rb
{
:en => {
# even no content may be at all but an :en key has to be present
},
},
}
如何解决这种行为?我不想在托管应用程序中明确创建相同的文件。我只想让它空,只有引擎让自己的翻译。因为它给引擎的用户带来了额外的不便。