Archived
1
0
Fork 0

doc: Factorize 'language-code->native-name'.

* doc/build.scm (localization-helper-module)[content](translate): Add
call to 'setenv' before 'write'.  Remove use of 'with-language'.
(language-code->native-name): New procedure.
(html-manual-indexes)[build](top-level-index): Use it.
This commit is contained in:
Ludovic Courtès 2022-01-18 22:16:12 +01:00
parent 3a75115689
commit ee16e4e8da
No known key found for this signature in database
GPG key ID: 090B11993D9AEBB5

View file

@ -842,6 +842,7 @@ must be the Guix top-level source directory, from which PO files are taken."
with-language with-language
translate translate
language-code->name language-code->name
language-code->native-name
seconds->string)) seconds->string))
(define (normalize language) ;XXX: deduplicate (define (normalize language) ;XXX: deduplicate
@ -876,9 +877,9 @@ must be the Guix top-level source directory, from which PO files are taken."
(bindtextdomain "iso_639-3" ;language names (bindtextdomain "iso_639-3" ;language names
#+(file-append iso-codes #+(file-append iso-codes
"/share/locale")) "/share/locale"))
(setenv "LANGUAGE" ,language)
(write (gettext ,str ,domain)))) (write (gettext ,str ,domain))))
(with-language language
;; Since the 'gettext' function caches msgid translations, ;; Since the 'gettext' function caches msgid translations,
;; regardless of $LANGUAGE, we have to spawn a new process each ;; regardless of $LANGUAGE, we have to spawn a new process each
;; time we want to translate to a different language. Bah! ;; time we want to translate to a different language. Bah!
@ -888,7 +889,7 @@ must be the Guix top-level source directory, from which PO files are taken."
"-c" (object->string exp))) "-c" (object->string exp)))
(str (read pipe))) (str (read pipe)))
(close-pipe pipe) (close-pipe pipe)
str))) str))
(define %iso639-languages (define %iso639-languages
(vector->list (vector->list
@ -910,6 +911,11 @@ must be the Guix top-level source directory, from which PO files are taken."
(assoc-ref language "name"))) (assoc-ref language "name")))
%iso639-languages))) %iso639-languages)))
(define (language-code->native-name code)
"Return the name of language CODE in that language."
(translate (language-code->name code) code
#:domain "iso_639-3"))
(define (seconds->string seconds language) (define (seconds->string seconds language)
(let* ((time (make-time time-utc 0 seconds)) (let* ((time (make-time time-utc 0 seconds))
(date (time-utc->date time))) (date (time-utc->date time)))
@ -1026,10 +1032,7 @@ languages:\n"
(ul (ul
,@(map (lambda (language) ,@(map (lambda (language)
`(li (a (@ (href ,(normalize language))) `(li (a (@ (href ,(normalize language)))
,(translate ,(language-code->native-name language))))
(language-code->name language)
language
#:domain "iso_639-3"))))
languages))))))) languages)))))))
(define (write-html file sxml) (define (write-html file sxml)