我需要为我的应用提供翻译API服务并选择Google Translate API,这将花费金钱并要求针对Google API进行身份验证。但在搜索过程中,我发现这个链接看起来很自由,可以不用花费我需要的东西:
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
尝试发出GET
请求,您可以自行查看。
所以,我的问题是上述服务之间有什么区别,我是否有权使用第二种服务?
答案 0 :(得分:2)
当然,它是免费的,您可以实现它(我在下面提供了一个示例)。但是,请勿使用它,因为一段时间后Google可以检测到可疑的流量(可悲的是,它发生在我身上),因此您会收到一条错误消息。我不确定您可以使用它多长时间,直到他们能够检测到您的活动,所以我的建议是使用“免费服务”对您的应用进行广泛的测试,如果您遇到麻烦,也许应该购买该服务或寻求其他服务API。 https://api.mymemory.translated.net是一种免费但有限的选择。
在iOS Swift 4中,您可以使用以下功能实现免费服务:
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()
}
(也许这不是最好的实现,但是它可行)。
答案 1 :(得分:1)
您提供的链接来自Google Translate(不是API,而是免费的多语言机器翻译服务),而不是Cloud Translation API,它提供了一个简单的编程接口,用于将任意字符串转换为任何支持的字符串语言使用最先进的神经机器翻译;所以他们不是你想的那样。