Changeset 23 in code for trunk/engines/reverso.go


Ignore:
Timestamp:
Sep 2, 2023, 12:15:30 PM (21 months ago)
Author:
manerakai
Message:

Improved code

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/engines/reverso.go

    r20 r23  
    1010// Reverso is an engine that fetches data from https://reverso.net.
    1111type Reverso struct{}
    12 
    13 func (_ *Reverso) InternalName() string { return "reverso" }
    1412
    1513func (_ *Reverso) DisplayName() string { return "Reverso" }
     
    8482
    8583        request.Header.Set("Content-Type", "application/json")
    86         // Returns 403 with empty or no user agent.
    8784        request.Header.Set("User-Agent", "Mozilla/5.0 (Windows NT 10.0; rv:110.0) Gecko/20100101 Firefox/110.0")
    8885
     
    110107}
    111108
    112 func (e *Reverso) DetectLanguage(text string) (string, error) {
    113         // Any language pair works here, does not affect result
    114         r, err := e.callAPI(text, "ara", "chi")
    115 
    116         if err != nil {
    117                 return "", err
     109func (e *Reverso) Translate(text string, from, to string) (TranslationResult, error) {
     110        if from == "auto" || from == "" {
     111                from = "eng"
    118112        }
    119113
     114        var translation string
     115
     116        r, err := e.callAPI(text, from, to)
     117        if err != nil {
     118                return TranslationResult{}, err
     119        }
     120
     121        translation = r.Translation[0]
    120122        langCode := r.LanguageDetection.DetectedLanguage
    121123
    122124        for code := range reversoLangs {
    123125                if code == langCode {
    124                         return code, nil
     126                        from = code
    125127                }
    126         }
    127 
    128         return "", fmt.Errorf("language code \"%s\" is not in Reverso's language list", langCode)
    129 }
    130 
    131 func (e *Reverso) Translate(text string, from, to string) (TranslationResult, error) {
    132         if from == "auto" {
    133                 from_, err := e.DetectLanguage(text)
    134 
    135                 if err != nil {
    136                         return TranslationResult{}, err
    137                 }
    138 
    139                 from = from_
    140         }
    141 
    142         var translation string
    143 
    144         if from == to {
    145                 translation = text
    146         } else {
    147                 r, err := e.callAPI(text, from, to)
    148 
    149                 if err != nil {
    150                         return TranslationResult{}, err
    151                 }
    152 
    153                 translation = r.Translation[0]
    154128        }
    155129
    156130        return TranslationResult{
    157131                TranslatedText: translation,
     132                SourceLanguage: from,
    158133        }, nil
    159134}
Note: See TracChangeset for help on using the changeset viewer.