You are viewing a plain text version of this content. The canonical link for it is here.
Posted to derby-dev@db.apache.org by "David W. Van Couvering" <Da...@Sun.COM> on 2005/10/23 05:17:14 UTC

Derby resource bundles and default locale

Hi, all.  In part of my proof-of-concept for shared code, I am working 
at making a few messages currently specific to the engine to be shared 
between the network client and engine.

The Javadoc for ResourceBundle indicates that when you look for a bundle 
it looks first for the locale specified (if any), then the default 
locale, and then for a bundle with no locale suffix.  e.g. if you say

   ResourceBundle.getBundle("org.apache.derby.loc.mymessages")

and the current locale is "ja_JP" then it will look for the following 
property files:

    mymessages_ja_JP.properties
    mymessages.properties

This is very nice, because you can have "fallback" messages in 
mymessages.properties if for whatever reason we haven't localized to the 
default locale of a given user.

But for some reason, instead of putting our fallback messages in the 
non-qualified properties file (e.g. "mymessages.properties"), we put 
them in a properties file for the "en" locale, e.g. 
"mymessages_en.properties".

Then in our code, when we look up a resource bundle, we do the following:

try {
     return ResourceBundle.getBundle(resource, locale);
     } catch (MissingResourceException mre) {

         // This covers the case where neither the
         // requested locale or the default locale
         // have a resource.
         return ResourceBundle.getBundle(resource, EN);
     }


Is there a reason why we're not making use of the fallback code that 
ResourceBundle already provides for us, and instead writing our own 
fallback code which depends on an exception?

I recognize that in the engine "messages_en.properties" is split up into 
about 50 files of the format mNN_en.properties, but couldn't we just as 
easily split up messages.properties into mNN.properties?

Thanks,

David