Add google translate vocabulary
parent
237d0733c6
commit
fc13ae09c0
|
@ -0,0 +1 @@
|
|||
Doug Coleman
|
|
@ -0,0 +1,55 @@
|
|||
! Copyright (C) 2010 Doug Coleman.
|
||||
! See http://factorcode.org/license.txt for BSD license.
|
||||
USING: assocs combinators fry grouping http.client io
|
||||
json.reader kernel locals namespaces sequences ;
|
||||
IN: google.translate
|
||||
|
||||
CONSTANT: google-translate-url "http://ajax.googleapis.com/ajax/services/language/translate"
|
||||
|
||||
CONSTANT: maximum-translation-size 5120
|
||||
|
||||
: parameters>assoc ( text from to -- assoc )
|
||||
"|" glue [
|
||||
[ "q" set ] [ "langpair" set ] bi*
|
||||
"1.0" "v" set
|
||||
] { } make-assoc ;
|
||||
|
||||
: assoc>query-response ( assoc -- response )
|
||||
google-translate-url http-post nip ;
|
||||
|
||||
ERROR: response-error response error ;
|
||||
|
||||
: throw-response-error ( response -- * )
|
||||
"responseDetails" over at response-error ;
|
||||
|
||||
: check-response ( response -- response )
|
||||
"responseStatus" over at {
|
||||
{ 200 [ ] }
|
||||
{ 400 [ throw-response-error ] }
|
||||
[ drop throw-response-error ]
|
||||
} case ;
|
||||
|
||||
: query-response>text ( response -- text )
|
||||
json> check-response
|
||||
"responseData" swap at
|
||||
"translatedText" swap at ;
|
||||
|
||||
: (translate) ( text from to -- text' )
|
||||
parameters>assoc
|
||||
assoc>query-response
|
||||
query-response>text ;
|
||||
|
||||
: translate ( text from to -- text' )
|
||||
[ maximum-translation-size group ] 2dip
|
||||
'[ _ _ (translate) ] map concat ;
|
||||
|
||||
:: translation-party ( text source target -- )
|
||||
text dup print [
|
||||
dup source target translate dup print
|
||||
target source translate dup print
|
||||
swap dupd = not
|
||||
] loop drop ;
|
||||
|
||||
! Example:
|
||||
! "dog" "en" "de" translate .
|
||||
! "Hund"
|
Loading…
Reference in New Issue