We can't just drop the file because Rails 3.2 requires it directly, so we keep it around even though it is just empty, since we won't support Ruby 1.8 anymore. This should allow Rails 3.2 users under Ruby 1.9 to update to the newest I18n without problem.
Currently when requesting a namespace it would give you a union of the top level keys, but would let nested keys override each other. As an effect of this, you would be losing translations coming from a lower-level backend if at least one subkey is "overridden" in a backend that has higher priority. This fix ensures that you instead get a "deep union" of all the translation keys and the merges do indeed get performed correctly not only at the top level of the namespace but all the way down.
Previously this would blow up if you asked for a key that wasn't in the original hash. This is consistent with Rails' version of Hash#slice.
So that the list gets properly updated when setting a new locale/default_locale. Related to #275.
The key-value store requires a very specific API from the store, and we can use a simple hash object to match that contract on our tests, so there's no need for yet another dependency on top of it.
Commit 12aa0f0 introduced a bug, where if `Fallbacks` module is included in a class that doesnt define `translations` the code would fail. This is a pretty common scenario, for instance when the backend is a `Chain`. Also this was pretty common case to fail in rails, as its include Fallbacks in the I18n.backend, like this: ``` I18n.backend.class.send(:include, I18n::Backend::Fallbacks) ``` This stops using the `translations` method in the fallbacks, and instead ignores `I18n::InvalidLocale` errors. [fixes #238] [fixes #258] [fixes #259]
Only strings and nil allowed.