エンジンを使用したアプリで奇妙な動作が発生します。アプリのロケール翻訳ファイルは、エンジンのロケール翻訳ファイルに影響します。
エンジンのファイルを機能させるには、アプリで同じファイルを明示的に作成する必要があります。それらに同じ名前を付けるだけで、空のロケールハッシュを入れるだけで十分です。
これは私のエンジンのロケール ディレクトリです。翻訳を.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
},
},
}
この動作を修正するにはどうすればよいですか? ホスティング アプリで同じファイルを明示的に作成したくありません。私はそれを空にしたいだけです。エンジンだけが独自の翻訳を持つことができます。エンジンのユーザーに追加の不便を引き起こすためです。