From 4b372258709a54b33b56caa05f91675211122ebc Mon Sep 17 00:00:00 2001 From: Eric Hanchrow Date: Wed, 29 Jun 2011 21:17:12 -0700 Subject: [PATCH] Suggest the list of language codes, if our caller seems to have gotten one wrong --- xlate.rkt | 31 +++++++++++++++++++++---------- 1 file changed, 21 insertions(+), 10 deletions(-) diff --git a/xlate.rkt b/xlate.rkt index 1d5417d..7aaf1b0 100755 --- a/xlate.rkt +++ b/xlate.rkt @@ -126,25 +126,36 @@ exec racket -l errortrace --require "$0" --main -- ${1+"$@"} (define (xlate from to text) (let* ([stuff (snag text from to)] [responseStatus (hash-ref stuff 'responseStatus)]) - (if (equal? 200 responseStatus) - (replace-html-entities - (hash-ref - (hash-ref - stuff - 'responseData) - 'translatedText)) - (hash-ref stuff 'responseDetails)))) + (cond + ((equal? responseStatus 200) + (replace-html-entities + (hash-ref + (hash-ref + stuff + 'responseData) + 'translatedText))) + ((and (equal? responseStatus 400) + (regexp-match #rx"invalid.*pair" (hash-ref stuff 'responseDetails))) + (format "~a: see http://code.google.com/apis/language/translate/v1/reference.html#LangNameArray" + (hash-ref stuff 'responseDetails))) + (else + (hash-ref stuff 'responseDetails))))) + (define t8 xlate) (define-test-suite xlate-tests (check-equal? (xlate "en" "it" "forty-five separate amendments") - "quarantacinque emendamenti separati") + "45 modifiche a parte") (check-equal? (xlate "en" "fr" "fledermaus: have I rubbed this in your face yet?") - "fledermaus: j'ai frotté dans votre visage encore?")) + "Fledermaus: j'ai frotté présent dans votre visage encore?") + + (check-regexp-match + #rx"invalid.*http://" + (xlate "frotz" "plotz" "I doubt this will get translated properly"))) (define-test-suite all-tests replace-tests