New Internationalization Extendability in Lift

I just committed new functionality into lift master for handling the abstraction of i18n ResourceBundles’ that are powered by custom sources - for example, database driven localization, or hooking into some translation service.

Now, you can do:

 LiftRules.resourceBundleFactories.prepend { 
   case (_, locale) if locale.getISO3Language == "eng" 
      => new MyResources
   case (_, locale) if locale.getISO3Language == "swe" 
      => new MyResources_sv
   case (_, locale) => new DBResourceLoader(locale)
 }

In this example we assume that you have fictional java.util.ResourceBundle subclasses called “MyResources” and “MyResources_sv”. Furthermore, if the ISO 639-3 code is not either “eng” or “swe”, then it attempts to load it from another fictional ResourceBundle subclass “DBResourceLoader”.

Long term, I will probably provide a ProtoDBResourceBundle or something similar, but for now, your on your own to implement the clever string and translation loading :-)

comments powered by Disqus