--- MoinMoin/i18n/__init__.py	2009-12-03 22:26:52 +0000
+++ MoinMoin/i18n/__init__.py	2009-12-03 22:21:50 +0000
@@ -222,7 +222,7 @@
     def loadLanguage(self, request, trans_dir="i18n"):
         request.clock.start('loadLanguage')
         # see comment about per-wiki scope above
-        cache = caching.CacheEntry(request, arena='i18n', key=self.language, scope='wiki', use_pickle=True)
+        cache = caching.CacheEntry(request, arena='i18n', key=('%s_%s' % (self.language, self.domain)), scope='wiki', use_pickle=True)
         langfilename = po_filename(request, self.language, self.domain, i18n_dir=trans_dir)
         needsupdate = cache.needsUpdate(langfilename)
         if not needsupdate:
@@ -256,6 +256,18 @@
     """ Return the text direction for a language, either 'ltr' or 'rtl'. """
     return languages[lang]['x-direction']
 
+def loadAllDomains(request, lang):
+    t = Translation(lang)
+    t.loadLanguage(request)
+    global translations
+    translations[lang] = t
+    for lang_file in glob.glob(po_filename(request, language=lang, domain='*')):
+        domain = os.path.basename(lang_file).split('.')[1]
+        if domain != 'MoinMoin':
+            t = Translation(lang, domain)
+            t.loadLanguage(request)
+            translations[lang].raw.update(t.raw)
+
 def getText(original, request, lang, **kw):
     """ Return a translation of some original text.
 
@@ -279,9 +291,7 @@
 
     global translations
     if not lang in translations: # load translation if needed
-        t = Translation(lang)
-        t.loadLanguage(request)
-        translations[lang] = t
+        loadAllDomains(request, lang)
 
     # get the matching entry in the mapping table
     translated = original
