fix: language list & update grammar API

This commit is contained in:
Pavel Korytov 2023-03-02 23:46:20 +03:00
parent c2c6ee2f19
commit af0e7b5b75

View file

@ -96,26 +96,34 @@
:type 'integer :type 'integer
:group 'reverso) :group 'reverso)
;; This mapping is also a source of all available languages ;; This mapping is also the source of all available languages
(defconst reverso--language-mapping (defconst reverso--language-mapping
'((english . eng) '((arabic . ara)
(german . ger) (chinese . chi)
(spanish . spa) (czech . cze)
(arabic . ara) (danish . dan)
(dutch . dut)
(english . eng)
(french . fra) (french . fra)
(german . ger)
(greek . gre)
(hebrew . heb) (hebrew . heb)
(hindi . hin)
(hungarian . hun)
(italian . ita) (italian . ita)
(japanese . jpn) (japanese . jpn)
(dutch . dut) (korean . kor)
(persian . per)
(polish . pol) (polish . pol)
(portuguese . por) (portuguese . por)
(romanian . rum) (romanian . rum)
(russian . rus) (russian . rus)
(ukrainian . ukr) (slovak . slo)
(turkish . tur) (spanish . spa)
(chinese . chi)
(swedish . swe) (swedish . swe)
(korean . kor)) (thai . tha)
(turkish . tur)
(ukrainian . ukr))
"Mapping from long language names to short ones. "Mapping from long language names to short ones.
This one is used for the translation queries.") This one is used for the translation queries.")
@ -140,7 +148,7 @@ This one is used for the translation queries.")
This one is used for the synonym queries.") This one is used for the synonym queries.")
(defconst reverso--right-to-left-languages (defconst reverso--right-to-left-languages
'(arabic hebrew) '(arabic hebrew persian)
"List of languages that are written from right to left.") "List of languages that are written from right to left.")
(defcustom reverso-languages (mapcar #'car reverso--language-mapping) (defcustom reverso-languages (mapcar #'car reverso--language-mapping)
@ -149,13 +157,12 @@ This one is used for the synonym queries.")
collect (list 'const (car cell))))) collect (list 'const (car cell)))))
(defconst reverso--languages (defconst reverso--languages
'((translation . (arabic german english spanish french hebrew italian `((translation . ,(mapcar #'car reverso--language-mapping))
japanese dutch polish portuguese romanian russian
swedish turkish ukrainian chinese))
(context . (arabic german english spanish french hebrew italian (context . (arabic german english spanish french hebrew italian
japanese dutch polish portuguese romanian japanese dutch polish portuguese romanian
russian swedish turkish ukrainian chinese)) russian swedish turkish ukrainian chinese
(grammar . (english french)) korean))
(grammar . (english french spanish italian))
(synonyms . (arabic german english spanish french hebrew italian (synonyms . (arabic german english spanish french hebrew italian
japanese dutch polish portuguese romanian japanese dutch polish portuguese romanian
russian))) russian)))
@ -166,37 +173,45 @@ This one is used for the synonym queries.")
. ((arabic . (english german spanish french hebrew italian . ((arabic . (english german spanish french hebrew italian
portuguese russian turkish ukrainian)) portuguese russian turkish ukrainian))
(german . (arabic english spanish french hebrew italian (german . (arabic english spanish french hebrew italian
japanese dutch polish portuguese romanian japanese korean dutch polish portuguese
russian swedish turkish ukrainian)) romanian russian swedish turkish ukrainian))
(english . (arabic german spanish french hebrew italian (english . (arabic german spanish french hebrew italian
japanese dutch polish portuguese romanian japanese korean dutch polish portuguese
russian swedish turkish ukrainian chinese)) romanian russian swedish turkish ukrainian chinese))
(spanish . (arabic german english french hebrew italian (spanish . (arabic german english french hebrew italian
japanese dutch polish portuguese romanian japanese korean dutch polish portuguese
russian swedish turkish chinese ukrainian)) romanian russian swedish turkish chinese
ukrainian))
(french . (arabic german spanish english hebrew italian (french . (arabic german spanish english hebrew italian
japanese dutch polish portuguese romanian japanese korean dutch polish portuguese
russian swedish turkish chinese ukrainian)) romanian russian swedish turkish chinese
(hebrew . (arabic german english spanish french italian dutch ukrainian))
portuguese russian ukrainian)) (hebrew . (arabic german english spanish french italian korean
(italian . (arabic german english spanish french hebrew dutch portuguese russian ukrainian))
(italian . (arabic german english spanish french hebrew korean
japanese dutch polish portuguese romanian japanese dutch polish portuguese romanian
russian swedish turkish ukrainian)) russian swedish turkish ukrainian))
(japanese . (german english spanish french italian portuguese (korean . (english ukrainian))
russian ukrainian)) (japanese . (german english spanish french italian korean
(dutch . (german english spanish french hebrew italian
portuguese russian ukrainian)) portuguese russian ukrainian))
(polish . (german english spanish french italian ukrainian)) (dutch . (german english spanish french hebrew italian korean
(portuguese . (arabic german english spanish french hebrew italian portuguese russian ukrainian))
japanese dutch russian turkish ukrainian)) (polish . (german english spanish french italian korean
(romanian . (german english spanish french italian turkish ukrainian)) ukrainian))
(russian . (arabic german english spanish french hebrew italian (portuguese . (arabic german english spanish french hebrew
japanese dutch portuguese ukrainian)) italian korean japanese dutch russian
(swedish . (german english spanish french italian ukrainian)) turkish ukrainian))
(romanian . (german english spanish french italian korean
turkish ukrainian))
(russian . (arabic german english spanish french hebrew
italian japanese korean dutch portuguese
ukrainian))
(swedish . (german english spanish french italian korean
ukrainian))
(turkish . (arabic german english spanish french italian (turkish . (arabic german english spanish french italian
portuguese romanian ukrainian)) korean portuguese romanian ukrainian))
(ukrainian . (english)) (ukrainian . (english korean))
(chinese . (english french spanish ukrainian)))) (chinese . (english french spanish korean ukrainian))))
;; They've changed this multiple times while I've been working at ;; They've changed this multiple times while I've been working at
;; the package. Finally it seems like every language is ;; the package. Finally it seems like every language is
;; compatible with every other, at least for the usual ;; compatible with every other, at least for the usual
@ -544,13 +559,25 @@ The result is an alist with the following keys:
- `:category': category of the correction, if available" - `:category': category of the correction, if available"
(unless (member language (alist-get 'grammar reverso--languages)) (unless (member language (alist-get 'grammar reverso--languages))
(error "Wrong language: %s" language)) (error "Wrong language: %s" language))
(request (concat (alist-get 'grammar reverso--urls) (request (alist-get 'grammar reverso--urls)
"?text=" (url-hexify-string text) :type "POST"
"&language=" (symbol-name :data (json-encode
(alist-get language reverso--language-mapping)) `((IsUserPremium . :json-false)
"&getCorrectionDetails=true") (autoReplace . t)
:type "GET" (englishDialect . "indifferent")
:headers `(("Accept" . "*/*") (getCorrectionDetails . t)
(interfaceLanguage . "en")
(isHtml . :json-false)
(language . ,(alist-get language reverso--language-mapping))
(locale . "")
(origin . "interactive")
(originalText . "")
(spellingFeedbackOptions
. ((insertFeedback . t)
(userLoggedOn . :json-false)))
(text . ,text)))
:headers `(("Content-Type" . "application/json")
("Accept" . "*/*")
("Connection" . "keep-alive") ("Connection" . "keep-alive")
("User-Agent" . ,reverso--user-agent)) ("User-Agent" . ,reverso--user-agent))
:parser 'json-read :parser 'json-read