web-dev-qa-db-fra.com

API Google Translate (payante) vs API Google Translate (gratuite)?

J'ai besoin du service API de traduction pour mon application et j'ai choisi API Google Translate , ce qui coûtera de l'argent et nécessitera une authentification par rapport à l'API Google. Mais au cours de la recherche, j'ai trouvé ce lien qui semble disponible gratuitement et qui répond à mes besoins sans frais:

https://translate.google.so/translate_a/t?client=any_client_id_works&sl=auto&tl=ru&q=wrapper&tbb=1&ie=UTF-8&oe=UTF-8

Essayez d’émettre une demande GET et vous la verrez vous-même.

Donc, ma question est quelle est la différence entre ces services ci-dessus et suis-je autorisé à utiliser le deuxième?

5
Anatoly

Bien sûr, il est gratuit et vous pouvez le mettre en œuvre (j'ai inclus un exemple ci-dessous). Cependant, NE L'UTILISEZ PAS car, au bout d'un moment, Google peut détecter le trafic suspect - c'est ce qui m'est arrivé - malheureusement - vous recevrez alors un message d'erreur. Je ne sais pas combien de temps vous pourrez l'utiliser jusqu'à ce qu'ils détectent votre activité. Mon conseil est donc de tester votre application de manière approfondie avec le "service gratuit". Si vous rencontrez des problèmes, vous devriez peut-être acheter le service ou en rechercher un autre. API. https://api.mymemory.translated.net est une alternative gratuite mais limitée. 

Dans iOS Swift 4, vous pouvez implémenter le service gratuit en utilisant la fonction suivante:

func translate(str: String, lang1: String, lang2: String) {

    let escapedStr = str.addingPercentEncoding(withAllowedCharacters: CharacterSet.urlQueryAllowed)
    let lastPart = lang1 + "&tl=" + lang2 + "&dt=t&dt=t&q=" + escapedStr!
    let urlStr: String = "https://translate.googleapis.com/translate_a/single?client=gtx&sl=" + lastPart
    let url = URL(string: urlStr)

    let task = URLSession.shared.downloadTask(with: url!) { localURL, urlResponse, error in
        if let localURL = localURL {
            if let string = try? String(contentsOf: localURL) {
                let index = string.firstIndex(of: "\"")
                let index2 = string.index(after: index!)
                let subst = string.substring(from: index2)
                let indexf = subst.firstIndex(of: "\"")
                let result = subst.substring(to: indexf!)
                DispatchQueue.main.async {
                    if flag1country != flag2country {
                        self.texto.text = result
                    }
                }
            }
        }
    }
    task.resume()
}

(Peut-être que ce n'est pas la meilleure implémentation, mais ça marche).

2
Javier Aguilar

Il semble que le lien que vous avez fourni provient de Google Translate (pas une API, mais un service gratuit de traduction automatique multilingue) au lieu de Cloud Translation API , qui fournit une interface de programmation simple pour la traduction arbitraire. chaîne dans n'importe quelle langue prise en charge à l'aide de la traduction automatique neurale de pointe; ils ne sont donc pas comme vous le pensez.

1
JL-HN