emacs-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: set-locale-environement: strange default detection


From: Sascha Wilde
Subject: Re: set-locale-environement: strange default detection
Date: Wed, 18 Jul 2007 14:28:55 +0200
User-agent: Gnus/5.11 (Gnus v5.11) Emacs/22.1.50 (gnu/linux)

David Kastrup <address@hidden> wrote:

> Sascha Wilde <address@hidden> writes:
>
>> David Kastrup <address@hidden> wrote:
>>> Sascha Wilde <address@hidden> writes:
>>
>>>> a friend of mine (unfortunately a vim user, but a nice guy otherwise),
>>>> tried emacs on Gnu/Linux and was surprised that `C-h t' presented him
>>>> the German version of the tutorial.
>> [...]
[...]
>> So maybe we should check for LANG, LC_ALL and maybe LC_MESSAGES in
>> tutorial.el itself.
>
> Possibly.  I am not sure whether environment variables tell the whole
> story, and in a readable way (there are locale system calls, too), but
> they would probably cover 90% of the cases.

I attached a rough patch, which solves the problem at least on
POSIX-like systems:

diff -c -L /vol1/opt/cvs-emacs-sarge/share/emacs/22.1.50/lisp/tutorial.el.gz -L 
/vol1/opt/src/emacs-hg-sarge/lisp/tutorial.el /tmp/jka-com32572F4r 
/vol1/opt/src/emacs-hg-sarge/lisp/tutorial.el
*** /vol1/opt/cvs-emacs-sarge/share/emacs/22.1.50/lisp/tutorial.el.gz
--- /vol1/opt/src/emacs-hg-sarge/lisp/tutorial.el
***************
*** 621,626 ****
--- 621,636 ----
                                              face tutorial-warning-face
                                              read-only t)))))))))))
  
+ (defun tutorial-get-language ()
+   "Use LC_ALL, LC_MESSAGES, LANG in turn to determine language to use.
+ This is more reliable then current-language-environment, which is not
+ intended to chose the language used for messages and documentation."
+   (let ((locale "") (vars '("LC_ALL" "LC_MESSAGES" "LANG")))
+     (while (and vars
+               (= 0 (length locale))) ; nil or empty string
+       (setq locale (getenv (pop vars))))
+     (locale-name-match locale locale-language-names)))
+ 
  (defun tutorial--saved-dir ()
    "Directory to which tutorials are saved."
    (expand-file-name "tutorial" user-emacs-directory))
***************
*** 766,774 ****
                         (add-hook 'minibuffer-setup-hook
                                   'minibuffer-completion-help)
                         (read-language-name 'tutorial "Language: " "English"))
!                    (if (get-language-info current-language-environment 
'tutorial)
!                        current-language-environment
!                      "English")))
             (filename (get-language-info lang 'tutorial))
             ;; Choose a buffer name including the language so that
             ;; several languages can be tested simultaneously:
--- 776,785 ----
                         (add-hook 'minibuffer-setup-hook
                                   'minibuffer-completion-help)
                         (read-language-name 'tutorial "Language: " "English"))
!                    (or (tutorial-get-language)
!                      (if (get-language-info current-language-environment 
'tutorial)
!                          current-language-environment
!                        "English"))))
             (filename (get-language-info lang 'tutorial))
             ;; Choose a buffer name including the language so that
             ;; several languages can be tested simultaneously:

Diff finished.  Wed Jul 18 14:23:30 2007
sascha
-- 
Sascha Wilde
Nothing is fool-proof to a sufficiently talented fool.

reply via email to

[Prev in Thread] Current Thread [Next in Thread]