--- C:/test/tcl8.6b2/library/msgcat/msgcat-ori.tcl	Mon Aug 27 19:24:55 2012
+++ C:/test/tcl8.6b2/library/msgcat/msgcat.tcl	Wed Sep 05 11:46:16 2012
@@ -25,10 +25,7 @@
     # Records the list of locales to search
     variable Loclist {}
 
-    # Records the locale of the currently sourced message catalogue file; this
-    # would be problematic if anyone were to recursively load a message
-    # catalog for a different locale from inside a catalog, but that's not a
-    # case that we really need to worry about.
+    # Records the locale of the currently sourced message catalogue file
     variable FileLocale
 
     # Records the mapping between source strings and translated strings.  The
@@ -284,6 +281,10 @@
 
 proc msgcat::mcload {langdir} {
     variable FileLocale
+    # Save the file locale if we are recursively called
+    if {[info exists FileLocale]} {
+	set nestedFileLocale $FileLocale
+    }
     set x 0
     foreach p [mcpreferences] {
 	if { $p eq {} } {
@@ -299,6 +300,9 @@
 	    uplevel 1 [list ::source -encoding utf-8 $langfile]
 	    unset FileLocale
 	}
+    }
+    if {[info exists nestedFileLocale]} {
+	set FileLocale $nestedFileLocale
     }
     return $x
 }
