Index: C:/eclipse_workspace/JSPWiki/src/com/ecyrd/jspwiki/preferences/Preferences.java
===================================================================
--- C:/eclipse_workspace/JSPWiki/src/com/ecyrd/jspwiki/preferences/Preferences.java	(revision 690485)
+++ C:/eclipse_workspace/JSPWiki/src/com/ecyrd/jspwiki/preferences/Preferences.java	(working copy)
@@ -208,11 +208,34 @@
         Locale loc = null;
         
         String language = Preferences.getPreference( context, "Language" );
-
+        
+        // parse language and construct valid Locale object
         if( language != null)
-            loc = new Locale(language);
-
-        if( loc == null) 
+        {
+            // e.g. "de-DE"
+            if ( language.matches( "\\p{Alpha}{2,3}[-_]\\p{Alpha}{2,3}" ) )
+            {
+                String lang = language.split( "[-_]" )[0];
+                String country = language.split( "[-_]" )[1];
+                loc = new Locale(lang, country);
+                if ( log.isDebugEnabled() )
+                    log.debug( "Created Locale object '" + loc.getLanguage() + "' - '" + loc.getCountry()
+                               + "' from language setting '" + language + "'.");
+            }
+            // e.g. "de"
+            else if ( language.matches( "\\p{Alpha}{2,3}" ) )
+            {
+                loc = new Locale(language);
+                if ( log.isDebugEnabled() )
+                    log.debug( "Created Locale object '" + loc.getLanguage() + "' - '" + loc.getCountry()
+                               + "' from language setting '" + language + "'.");
+            }
+            else
+                log.warn( "Preferences contained invalid language setting: " + language );
+        }
+        
+        // otherwise try to find out the browser's preferred language setting, or use the JVM's default
+        if( loc == null)
         {    
             HttpServletRequest request = context.getHttpRequest();
             loc = ( request != null ) ? request.getLocale() : Locale.getDefault();
