I could be wrong, but from what I can tell, it looks like the Locale Languages are not being used correctly. According to the javadoc for Locale.getDefault().getLanguage() it says:
NOTE: ISO 639 is not a stable standard-- some languages' codes have changed. Locale's constructor recognizes both the new and the old codes for the languages whose codes have changed, but this function always returns the old code. If you want to check for a specific language whose code has changed, don't do
if (locale.getLanguage().equals("he"))
...
Instead, do
if (locale.getLanguage().equals(new Locale("he", "", "").getLanguage()))
...
But I seen in the 0.5 version in SpellChecker.registerDictionaries(URL, String, String, String) for example:
if( activeLocale == null ) {
activeLocale = "";
}
activeLocale = activeLocale.trim();
if( activeLocale.length() == 0 ) {
activeLocale = Locale.getDefault().getLanguage();
}
boolean activeSelected = false;
for( String locale : availableLocales.split( "," ) ) {
locale = locale.trim().toLowerCase();
if(locale.length() > 0){
LanguageAction action = new LanguageAction( baseURL, new Locale( locale ), extension );
languages.remove( action );
languages.add( action );
if( locale.equals( activeLocale ) ) {
action.actionPerformed( null );
activeSelected = true;
}
}
}
which looks like it is doing this exactly the way the javadoc recommends against at the line: if( locale.equals( activeLocale ) ) {
There are probably a few places this is being done.
Theoretical your right but practical not. The method accept a list of locales like "en,de,fr". The next parameter described which entry in this list is the default.
"en,de,fr" and "de" has nothing to do with old or new locales.
The languages codes that you pass should be identical to the file names. If you pass an old language code then we can not find the file name because Java does not accept it. We can make the documentation clearer in this point.
There are only 3 locales with the problem. Do you have a concrete problem with one of this 3 languagesß