From a72a6a1666ca29de3e9d0fb01a64ada20905674f Mon Sep 17 00:00:00 2001 From: Sergey Poznyakoff Date: Sat, 15 Apr 2006 06:56:04 +0000 Subject: Update git-svn-id: file:///home/puszcza/svnroot/ellinika/trunk@447 941c8c0f-9102-463b-b60b-cd22ce0e6858 --- ellinika/i18n.scm | 79 +++++++++++++++++++++++++++++-------------------------- 1 file changed, 42 insertions(+), 37 deletions(-) (limited to 'ellinika') diff --git a/ellinika/i18n.scm b/ellinika/i18n.scm index e8a0065..8d9617a 100644 --- a/ellinika/i18n.scm +++ b/ellinika/i18n.scm @@ -256,43 +256,48 @@ #f))) (define (locale-setup lang domain-name locale-path) - (cond - ((not lang) - (setenv "LC_ALL" "C") - (setlocale LC_ALL "C") - #f) - (else - (let ((curlocale (if (> (string-length lang) 2) - (string-downcase (substring lang 0 2)) - lang)) - (terr #f) - (sublocale #f) - (domaindir #f)) - - (cond - ((and (> (string-length lang) 2) (char=? (string-ref lang 2) #\-)) - (set! terr (string-upcase (substring lang 3 2))) - (set! sublocale (string-append curlocale "_" terr))) - ((assoc-ref defterr (string->symbol curlocale)) => - (lambda (elt) - (set! sublocale curlocale) - (set! terr elt))) - (else - (set! sublocale curlocale) - (set! terr "XX"))) ; Hack for languages without defined territory. - - (let ((domaindir (supported-locale-dir sublocale domain-name locale-path))) - (cond - (domaindir - (let ((locale (string-append curlocale "_" terr ".UTF-8"))) - (setenv "LC_ALL" locale) - (setlocale LC_ALL locale) - (textdomain domain-name) - (bindtextdomain domain-name domaindir) - locale)) - ((setenv "LC_ALL" "C") - (setlocale LC_ALL "C") - #f))))))) + (catch 'system-error + (lambda () + (cond + ((not lang) + (setenv "LC_ALL" "C") + (setlocale LC_ALL "C") + #f) + (else + (let ((curlocale (if (> (string-length lang) 2) + (string-downcase (substring lang 0 2)) + lang)) + (terr #f) + (sublocale #f) + (domaindir #f)) + + (cond + ((and (> (string-length lang) 2) (char=? (string-ref lang 2) #\-)) + (set! terr (string-upcase (substring lang 3 2))) + (set! sublocale (string-append curlocale "_" terr))) + ((assoc-ref defterr (string->symbol curlocale)) => + (lambda (elt) + (set! sublocale curlocale) + (set! terr elt))) + (else + (set! sublocale curlocale) + (set! terr "XX"))) ; Hack for languages without defined territory. + + (let ((domaindir + (supported-locale-dir sublocale domain-name locale-path))) + (cond + (domaindir + (let ((locale (string-append curlocale "_" terr ".UTF-8"))) + (setenv "LC_ALL" locale) + (setlocale LC_ALL locale) + (textdomain domain-name) + (bindtextdomain domain-name domaindir) + locale)) + ((setenv "LC_ALL" "C") + (setlocale LC_ALL "C") + #f))))))) + (lambda args + #f))) -- cgit v1.2.1