Here's how the path to message files is constructed under SunOS 5.0:
   {pathname}/{LANG}/LC_MESSAGES/{domain}.mo
 \[XEmacs I18N level 3 emulating function]"
-    (let* ((lang (getenv "LANG"))
+    (let* ((lang (or (getenv "LC_ALL") (getenv "LC_MESSAGES") (getenv "LANG"))
           (language (progn
                       (string-match "\\([^_.]+\\)\\(_[^.]+\\)?\\(\\.[^@]+\\)?"
                                     lang)
           (territory (match-string 2 lang))
           (code-set (match-string 3 lang))
           (lang-path (if lang
-                         (delq nil (list language
-                                         (if code-set
-                                             (concat language code-set))
+                         (delq nil (list (if (and territory code-set)
+                                             (concat language territory
+                                                     code-set))
                                          (if territory
                                              (concat language territory))
-                                         (if (and territory code-set)
-                                             (concat language territory code-set))))))
-          
+                                         (if code-set
+                                             (concat language code-set))
+                                         language))))
           (file (concat domain ".mo"))
           catalog)
       (while (and (setq lang (car lang-path))