Index: abi/src/wp/ap/beos/ap_BeOSApp.cpp
===================================================================
RCS file: /cvsroot/abi/src/wp/ap/beos/ap_BeOSApp.cpp,v
retrieving revision 1.38
diff -u -r1.38 ap_BeOSApp.cpp
--- abi/src/wp/ap/beos/ap_BeOSApp.cpp	2000/10/30 20:52:26	1.38
+++ abi/src/wp/ap/beos/ap_BeOSApp.cpp	2000/11/19 02:06:41
@@ -55,6 +55,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 "ie_imp.h"
@@ -300,6 +301,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);
 
@@ -309,12 +335,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/qnx/ap_QNXApp.cpp
===================================================================
RCS file: /cvsroot/abi/src/wp/ap/qnx/ap_QNXApp.cpp,v
retrieving revision 1.18
diff -u -r1.18 ap_QNXApp.cpp
--- abi/src/wp/ap/qnx/ap_QNXApp.cpp	2000/11/15 23:57:41	1.18
+++ abi/src/wp/ap/qnx/ap_QNXApp.cpp	2000/11/19 02:06:49
@@ -49,6 +49,7 @@
 #include "xap_Dlg_MessageBox.h"
 #include "xap_Dialog_Id.h"
 #include "xap_Menu_ActionSet.h"
+#include "xap_Menu_LabelSet.h"
 #include "xap_Toolbar_ActionSet.h"
 #include "xav_View.h"
 
@@ -214,6 +215,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);
 
@@ -223,12 +249,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/unix/ap_UnixApp.cpp
===================================================================
RCS file: /cvsroot/abi/src/wp/ap/unix/ap_UnixApp.cpp,v
retrieving revision 1.63
diff -u -r1.63 ap_UnixApp.cpp
--- abi/src/wp/ap/unix/ap_UnixApp.cpp	2000/11/14 05:03:49	1.63
+++ abi/src/wp/ap/unix/ap_UnixApp.cpp	2000/11/19 02:06:56
@@ -49,6 +49,7 @@
 #include "xap_Dlg_MessageBox.h"
 #include "xap_Dialog_Id.h"
 #include "xap_Menu_ActionSet.h"
+#include "xap_Menu_LabelSet.h"
 #include "xap_Toolbar_ActionSet.h"
 #include "xav_View.h"
 
@@ -216,6 +217,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);
 
@@ -225,12 +251,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);
 		}
 	}