changeset 91681:88dc1f9f4da0

(locale-translate): New function, with old code extracted from set-locale-environment. (set-locale-environment): Use locale-translate. Set woman-locale.
author Glenn Morris <rgm@gnu.org>
date Fri, 08 Feb 2008 20:43:16 +0000
parents 8bf8aae304d2
children 811f56080d77
files lisp/international/mule-cmds.el
diffstat 1 files changed, 23 insertions(+), 11 deletions(-) [+]
line wrap: on
line diff
--- a/lisp/international/mule-cmds.el	Fri Feb 08 20:29:53 2008 +0000
+++ b/lisp/international/mule-cmds.el	Fri Feb 08 20:43:16 2008 +0000
@@ -2422,6 +2422,19 @@
 ;; too, for setting things such as calendar holidays, ps-print paper
 ;; size, spelling dictionary.
 
+(defun locale-translate (locale)
+  "Expand LOCALE according to `locale-translation-file-name', if possible.
+For example, translate \"swedish\" into \"sv_SE.ISO8859-1\"."
+  (if locale-translation-file-name
+      (with-temp-buffer
+        (set-buffer-multibyte nil)
+        (insert-file-contents locale-translation-file-name)
+        (if (re-search-forward
+             (concat "^" (regexp-quote locale) ":?[ \t]+") nil t)
+            (buffer-substring (point) (line-end-position))
+          locale))
+    locale))
+
 (defun set-locale-environment (&optional locale-name frame)
   "Set up multi-lingual environment for using LOCALE-NAME.
 This sets the language environment, the coding system priority,
@@ -2491,16 +2504,7 @@
       (setq locale mac-system-locale))
 
     (when locale
-
-      ;; Translate "swedish" into "sv_SE.ISO8859-1", and so on,
-      ;; using the translation file that many systems have.
-      (when locale-translation-file-name
-	(with-temp-buffer
-	  (set-buffer-multibyte nil)
-	  (insert-file-contents locale-translation-file-name)
-	  (when (re-search-forward
-		 (concat "^" (regexp-quote locale) ":?[ \t]+") nil t)
-	    (setq locale (buffer-substring (point) (line-end-position))))))
+      (setq locale (locale-translate locale))
 
       ;; Leave the system locales alone if the caller did not specify
       ;; an explicit locale name, as their defaults are set from
@@ -2508,8 +2512,16 @@
       ;; want to set them to the same value as LC_CTYPE.
       (when locale-name
 	(setq system-messages-locale locale)
-	(setq system-time-locale locale))
+	(setq system-time-locale locale)))
 
+    (setq woman-locale
+          (or system-messages-locale
+              (let ((msglocale (getenv "LC_MESSAGES")))
+                (if (zerop (length msglocale))
+                    locale
+                  (locale-translate msglocale)))))
+
+    (when locale
       (setq locale (downcase locale))
 
       (let ((language-name