We’re currently working on swapping the I18n backend used by our Rails apps from Simple to KeyValue, but have run into a problem with the API the two backends implement.
We’ve found that the Simple backend implements three methods, self.initialized?, self.init_translations and self.transaltions, that the KeyValue backend doesn’t.
Another gem we’re using, i18n-js, for internationalising text that ends up in the asset pipeline, is using those three methods on the Simple backend, meaning we our apps blow up when we change the backend.
The immediate solution we’re going with for now is simple monkey-patching those methods onto the KeyValue backend to get things working, and the long term solution is to submit a patch to the i18n gem to add the missing methods in.
Before we go ahead and do that though, I was hoping someone could tell us the rationale for providing different public APIs on components that are supposed to be interchangeable.