(require-extension format-modular) (require-extension srfi-29) (let ((translations '(((en) . ((time . "Its ~a, ~a.") (goodbye . "Goodbye, ~a."))) ((fr) . ((time . "address@hidden, c'est ~a.") (goodbye . "Au revoir, ~a.")))))) (for-each (lambda (translation) (let ((bundle-name (cons 'hello-program (car translation)))) (declare-bundle! bundle-name (cdr translation)))) translations)) (define localized-message (lambda (message-name . args) (apply format (cons (localized-template 'hello-program message-name) args)))) (current-language 'fr) (let ((myname "Fred")) (display (localized-message 'time "12:00" myname)) (display #\newline) (display (localized-message 'goodbye myname)) (display #\newline))