aboutsummaryrefslogtreecommitdiff
path: root/ellinika/i18n.scm
diff options
context:
space:
mode:
Diffstat (limited to 'ellinika/i18n.scm')
-rw-r--r--ellinika/i18n.scm79
1 files changed, 42 insertions, 37 deletions
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 @@
256 #f))) 256 #f)))
257 257
258(define (locale-setup lang domain-name locale-path) 258(define (locale-setup lang domain-name locale-path)
259 (cond 259 (catch 'system-error
260 ((not lang) 260 (lambda ()
261 (setenv "LC_ALL" "C") 261 (cond
262 (setlocale LC_ALL "C") 262 ((not lang)
263 #f) 263 (setenv "LC_ALL" "C")
264 (else 264 (setlocale LC_ALL "C")
265 (let ((curlocale (if (> (string-length lang) 2) 265 #f)
266 (string-downcase (substring lang 0 2)) 266 (else
267 lang)) 267 (let ((curlocale (if (> (string-length lang) 2)
268 (terr #f) 268 (string-downcase (substring lang 0 2))
269 (sublocale #f) 269 lang))
270 (domaindir #f)) 270 (terr #f)
271 271 (sublocale #f)
272 (cond 272 (domaindir #f))
273 ((and (> (string-length lang) 2) (char=? (string-ref lang 2) #\-)) 273
274 (set! terr (string-upcase (substring lang 3 2))) 274 (cond
275 (set! sublocale (string-append curlocale "_" terr))) 275 ((and (> (string-length lang) 2) (char=? (string-ref lang 2) #\-))
276 ((assoc-ref defterr (string->symbol curlocale)) => 276 (set! terr (string-upcase (substring lang 3 2)))
277 (lambda (elt) 277 (set! sublocale (string-append curlocale "_" terr)))
278 (set! sublocale curlocale) 278 ((assoc-ref defterr (string->symbol curlocale)) =>
279 (set! terr elt))) 279 (lambda (elt)
280 (else 280 (set! sublocale curlocale)
281 (set! sublocale curlocale) 281 (set! terr elt)))
282 (set! terr "XX"))) ; Hack for languages without defined territory. 282 (else
283 283 (set! sublocale curlocale)
284 (let ((domaindir (supported-locale-dir sublocale domain-name locale-path))) 284 (set! terr "XX"))) ; Hack for languages without defined territory.
285 (cond 285
286 (domaindir 286 (let ((domaindir
287 (let ((locale (string-append curlocale "_" terr ".UTF-8"))) 287 (supported-locale-dir sublocale domain-name locale-path)))
288 (setenv "LC_ALL" locale) 288 (cond
289 (setlocale LC_ALL locale) 289 (domaindir
290 (textdomain domain-name) 290 (let ((locale (string-append curlocale "_" terr ".UTF-8")))
291 (bindtextdomain domain-name domaindir) 291 (setenv "LC_ALL" locale)
292 locale)) 292 (setlocale LC_ALL locale)
293 ((setenv "LC_ALL" "C") 293 (textdomain domain-name)
294 (setlocale LC_ALL "C") 294 (bindtextdomain domain-name domaindir)
295 #f))))))) 295 locale))
296 ((setenv "LC_ALL" "C")
297 (setlocale LC_ALL "C")
298 #f)))))))
299 (lambda args
300 #f)))
296 301
297 302
298 303

Return to:

Send suggestions and report system problems to the System administrator.