#lang racket (provide tr __ languages set-lang! current-lang ) (define tr_map (make-hash)) (define (add-tr id language translated-sentence) (let ((lang-hash (hash-ref tr_map language (make-hash)))) (hash-set! lang-hash id translated-sentence) (hash-set! tr_map language lang-hash))) (define-syntax add2 (syntax-rules () ((_ id (l ts)) (add-tr id l ts))))- (define-syntax add (syntax-rules () ((_ id l1) (add2 id l1)) ((_ id l1 l2 ...) (begin (add2 id l1) (add id l2 ...) )))) (define-syntax add** (syntax-rules () ((_ (id l1 ...)) (add id l1 ...) ) ) ) (define-syntax add* (syntax-rules () ((_ t1) (add** t1)) ((_ t1 t2 ...) (begin (add** t1) (add* t2 ...) )) ) ) (define language 'en) (define (languages) '((en "English") (nl "Nederlands"))) (define (set-lang! l) (set! language l)) (define (current-lang) language ) (define (tr* id lang) (let ((lang-hash (hash-ref tr_map lang (make-hash)))) (hash-ref lang-hash id #f))) (define (tr id) (let ((s (tr* id language))) (if (eq? s #f) (let ((en-s (tr* id 'en))) (if (eq? en-s #f) (format "~a:~a" language id) (format "~a:~a" language en-s))) s))) (define (__ s) (tr s)) ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;; Translations ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; (add* ('select-library-dir ('en "Select Music Library Folder") ('nl "Selecteer map met Muziek Bibliotheek")) ('choose-lib-folder ('en "Choose the folder containing your music library") ('nl "Kies de map met de Muziek Bibliotheek")) ('quit ('en "Quit") ('nl "Beƫindigen")) ('channels ('en "channels") ('nl "kanalen")) ('language ('en "Language") ('nl "Taal")) ('name ('en "Name") ('nl "Naam")) ('local-path ('en "Local Path") ('nl "Lokale Path")) ('host ('en "Host") ('nl "Host")) ('prefixes ('en "Prefixes") ('nl "Prefixen")) ('ok ('en "OK") ('nl "OK")) ('cancel ('en "Cancel") ('nl "Annuleren")) ('settings ('en "Settings") ('nl "Instellingen")) ('add-playlist ('en "Add Playlist") ('nl "Voeg afspeellijst toe")) ('volume ('en "Volume") ('nl "Volume")) ('file ('en "File") ('nl "Bestand")) ('playing ('en "playing") ('nl "speelt")) ('stopped ('en "stopped") ('nl "gestopt")) ('paused ('en "paused") ('nl "gepauzeerd")) ('unknown-state ('en "Unknown state") ('nl "Onbekende status")) ('rename-playlist ('en "Rename playlist") ('nl "Hernoem afspeellijst")) ('remove-playlist ('en "Remove playlist") ('nl "Verwijder afspeellijst")) ('play-this ('en "Play this") ('nl "Speel dit")) ('add-this ('en "Add this") ('nl "Voeg toe")) ('open-booklet ('en "Open booklet") ('nl "Open boekje")) ('open-containing-folder ('en "Open containing folder") ('nl "Open map met bestand")) ('show-window ('en "Show window") ('nl "Toon venster")) ('hide-window ('en "Hide window") ('nl "Verberg venster")) ('pause-play ('en "Pause / Play") ('nl "Pauze / Afspelen")) ('racket-music-player ('en "Racket Music Player") ('nl "Racket Muziek Speler")) ('bits ('en "bits") ('nl "bits")) ('play ('en "Play") ('nl "Afspelen")) )