(in-package txt2web) (defparameter *languages* (list "en" "ru")) (defparameter *l10n-strings* (mapcan (lambda (lang) (cons (intern (string-upcase lang) :keyword) (list (apply #'append (read-code-from-string (load-src (concatenate 'string "strings/" lang ".sexp"))))))) *languages*)) (defun lformat (target key &rest args) (let* ((lang (intern (string-upcase (first (system-locale:languages))) :keyword)) (strings (or (getf *l10n-strings* lang) (getf *l10n-strings* :en))) (string (getf strings key))) (if string (apply #'format target string args) (error "Unknown localization string ~S for language ~S" key lang))))