Fallback to default locale in Locale::bestMatch
authorMichael Andres <ma@suse.de>
Wed, 22 Oct 2008 12:30:33 +0000 (12:30 +0000)
committerMichael Andres <ma@suse.de>
Wed, 22 Oct 2008 12:30:33 +0000 (12:30 +0000)
zypp/Locale.cc
zypp/Locale.h

index ac7e5f3..ba03d12 100644 (file)
@@ -13,6 +13,7 @@
 #include <map>
 
 #include "zypp/Locale.h"
+#include "zypp/ZConfig.h"
 
 using std::endl;
 
@@ -222,11 +223,15 @@ namespace zypp
   Locale Locale::fallback() const
   { return _pimpl->fallback(); }
 
+
+  ///////////////////////////////////////////////////////////////////
+
   Locale Locale::bestMatch( const LocaleSet & avLocales_r, const Locale & requested_r )
   {
     if ( ! avLocales_r.empty() )
     {
-      for ( Locale check( requested_r ); check != noCode; check = check.fallback() )
+      for ( Locale check( requested_r == noCode ? ZConfig::instance().defaultTextLocale() : requested_r );
+            check != noCode; check = check.fallback() )
       {
         if ( avLocales_r.find( check ) != avLocales_r.end() )
           return check;
index e97ba8a..64b34e2 100644 (file)
@@ -90,10 +90,13 @@ namespace zypp
 
     /** Return the best match for \ref Locale \c requested_r within the available \c avLocales_r.
      *
-     * If neither \c requested_r nor any of it's \ref fallback locales are available,
-     * \ref Locale::noCode is returned.
+     * If \c requested_r is nor specified or equals \ref Locale::noCode,
+     * \ref ZConfig::defaultTextLocale is assumed.
+     *
+     * If neither \c requested_r nor any of it's \ref fallback locales
+     * are available, \ref Locale::noCode is returned.
     */
-    static Locale bestMatch( const LocaleSet & avLocales_r, const Locale & requested_r );
+    static Locale bestMatch( const LocaleSet & avLocales_r, const Locale & requested_r = Locale() );
 
   private:
     /** Pointer to implementation */