[haiku-commits] r35787 - haiku/trunk/src/kits/locale

  • From: pulkomandy@xxxxxxxxx
  • To: haiku-commits@xxxxxxxxxxxxx
  • Date: Tue, 9 Mar 2010 11:47:03 +0100 (CET)

Author: pulkomandy
Date: 2010-03-09 11:47:03 +0100 (Tue, 09 Mar 2010)
New Revision: 35787
Changeset: http://dev.haiku-os.org/changeset/35787/haiku

Modified:
   haiku/trunk/src/kits/locale/LocaleRoster.cpp
Log:
Change the catalog loading so it will crawl up the catalogs even if the rt root 
one is not found. This will allow to load "fr" even if "fr_FR" is not found. 
This way the preflet in its current state works again.


Modified: haiku/trunk/src/kits/locale/LocaleRoster.cpp
===================================================================
--- haiku/trunk/src/kits/locale/LocaleRoster.cpp        2010-03-08 16:40:35 UTC 
(rev 35786)
+++ haiku/trunk/src/kits/locale/LocaleRoster.cpp        2010-03-09 10:47:03 UTC 
(rev 35787)
@@ -600,33 +600,36 @@
                const char *lang;
                for (int32 l=0; languages.FindString("language", l, 
&lang)==B_OK; ++l) {
                        catalog = info->fInstantiateFunc(signature, lang, 
fingerprint);
-                       if (catalog) {
+                       if (catalog)
                                info->fLoadedCatalogs.AddItem(catalog);
-                               // Chain-load catalogs for languages that 
depend on
-                               // other languages.
-                               // The current implementation uses the filename 
in order to
-                               // detect dependencies (parenthood) between 
languages (it
-                               // traverses from "english-british-oxford" to 
"english-british"
-                               // to "english"):
-                               // TODO :use ICU facilities instead, so we can 
handle more
-                               // complex things such as fr_FR@euro, or 
whatever, encodings
-                               // and so on.
-                               int32 pos;
-                               BString langName(lang);
-                               BCatalogAddOn *currCatalog=catalog, 
*nextCatalog;
-                               while ((pos = langName.FindLast('-')) >= 0) {
-                                       // language is based on parent, so we 
load that, too:
-                                       langName.Truncate(pos);
-                                       nextCatalog = 
info->fInstantiateFunc(signature,
-                                               langName.String(), fingerprint);
-                                       if (nextCatalog) {
-                                               
info->fLoadedCatalogs.AddItem(nextCatalog);
+                       // Chain-load catalogs for languages that depend on
+                       // other languages.
+                       // The current implementation uses the filename in 
order to
+                       // detect dependencies (parenthood) between languages 
(it
+                       // traverses from "english-british-oxford" to 
"english-british"
+                       // to "english"):
+                       // TODO :use ICU facilities instead, so we can handle 
more
+                       // complex things such as fr_FR@euro, or whatever, 
encodings
+                       // and so on.
+                       int32 pos;
+                       BString langName(lang);
+                       BCatalogAddOn *currCatalog=catalog, *nextCatalog;
+                       while ((pos = langName.FindLast('_')) >= 0) {
+                               // language is based on parent, so we load 
that, too:
+                               // (even if the parent catalog was not found)
+                               langName.Truncate(pos);
+                               nextCatalog = info->fInstantiateFunc(signature,
+                                       langName.String(), fingerprint);
+                               if (nextCatalog) {
+                                       
info->fLoadedCatalogs.AddItem(nextCatalog);
+                                       if(currCatalog)
                                                currCatalog->fNext = 
nextCatalog;
-                                               currCatalog = nextCatalog;
-                                       }
+                                       else
+                                               catalog = nextCatalog;
+                                       currCatalog = nextCatalog;
                                }
-                               return catalog;
                        }
+                       return catalog;
                }
                info->UnloadIfPossible();
        }


Other related posts:

  • » [haiku-commits] r35787 - haiku/trunk/src/kits/locale - pulkomandy