Index: abi/src/af/xap/xp/xap_Menu_LabelSet.h =================================================================== RCS file: /cvsroot/abi/src/af/xap/xp/xap_Menu_LabelSet.h,v retrieving revision 1.5 diff -u -r1.5 xap_Menu_LabelSet.h --- abi/src/af/xap/xp/xap_Menu_LabelSet.h 1999/05/01 08:45:48 1.5 +++ abi/src/af/xap/xp/xap_Menu_LabelSet.h 2000/11/19 02:06:29 @@ -26,5 +26,6 @@ EV_Menu_LabelSet * AP_CreateMenuLabelSet(const char * szLanguage); UT_uint32 AP_GetMenuLabelSetLanguageCount(void); const char * AP_GetNthMenuLabelLanguageName(UT_uint32 ndx); +UT_Bool AP_IsNthMenuLabelDefaultSetForLanguage(UT_uint32 ndx); #endif /* XAP_MENU_LABELSET_H */ Index: abi/src/wp/ap/win/ap_Win32App.cpp =================================================================== RCS file: /cvsroot/abi/src/wp/ap/win/ap_Win32App.cpp,v retrieving revision 1.50 diff -u -r1.50 ap_Win32App.cpp --- abi/src/wp/ap/win/ap_Win32App.cpp 2000/07/10 21:56:16 1.50 +++ abi/src/wp/ap/win/ap_Win32App.cpp 2000/11/19 02:07:02 @@ -42,6 +42,7 @@ #include "xap_EditMethods.h" #include "ap_LoadBindings.h" #include "xap_Menu_ActionSet.h" +#include "xap_Menu_LabelSet.h" #include "xap_Toolbar_ActionSet.h" #include "ap_Win32Resources.rc2" @@ -194,6 +195,31 @@ ((szDirectory[strlen(szDirectory)-1]=='\\') ? "" : "\\"), szStringSet); + // try finding the default set name for this language. + UT_uint32 k, iLanguageCount = AP_GetMenuLabelSetLanguageCount(); + char * dash = strchr(szStringSet, '-'); + int len = (dash ? dash - szStringSet : 2); + const char * szDefaultStringSetForLanguage = ""; + for (k=0; k < iLanguageCount; k++) + { + if ( (UT_strnicmp(szStringSet,AP_GetNthMenuLabelLanguageName(k),len)==0) + && (AP_IsNthMenuLabelDefaultSetForLanguage(k))) + { + szDefaultStringSetForLanguage = AP_GetNthMenuLabelLanguageName(k); + break; + } + } + + // build the path for this default set language name + char * szPathnameDefaultSetForLanguage = + (char *)calloc(sizeof(char),strlen(szDirectory)+ + strlen(szDefaultStringSetForLanguage)+100); + UT_ASSERT(szPathname); + sprintf(szPathnameDefaultSetForLanguage,"%s%s%s.strings", + szDirectory, + ((szDirectory[strlen(szDirectory)-1]=='\\') ? "" : "\\"), + szDefaultStringSetForLanguage); + AP_DiskStringSet * pDiskStringSet = new AP_DiskStringSet(this); UT_ASSERT(pDiskStringSet); @@ -203,12 +229,23 @@ m_pStringSet = pDiskStringSet; UT_DEBUGMSG(("Using StringSet [%s]\n",szPathname)); } + else if (*szDefaultStringSetForLanguage && + pDiskStringSet->loadStringsFromDisk(szPathnameDefaultSetForLanguage)) + { + pDiskStringSet->setFallbackStringSet(m_pStringSet); + m_pStringSet = pDiskStringSet; + m_prefs->getCurrentScheme()->setValue( + AP_PREF_KEY_StringSet,szDefaultStringSetForLanguage); + UT_DEBUGMSG(("Using default StringSet for language [%s]\n", + szPathnameDefaultSetForLanguage)); + } else { DELETEP(pDiskStringSet); UT_DEBUGMSG(("Unable to load StringSet [%s] -- using builtin strings instead.\n",szPathname)); } + free(szPathnameDefaultSetForLanguage); free(szPathname); } } Index: abi/src/wp/ap/xp/ap_Menu_LabelSet.cpp =================================================================== RCS file: /cvsroot/abi/src/wp/ap/xp/ap_Menu_LabelSet.cpp,v retrieving revision 1.12 diff -u -r1.12 ap_Menu_LabelSet.cpp --- abi/src/wp/ap/xp/ap_Menu_LabelSet.cpp 2000/10/10 00:39:32 1.12 +++ abi/src/wp/ap/xp/ap_Menu_LabelSet.cpp 2000/11/19 02:07:10 @@ -149,3 +149,10 @@ return s_ltTable[ndx].m_name; } +UT_Bool AP_IsNthMenuLabelDefaultSetForLanguage(UT_uint32 ndx) +{ + UT_ASSERT(ndx < NrElements(s_ltTable)); + + return s_ltTable[ndx].m_bIsDefaultSetForLanguage; +} +