没有收到来自 translate.google.com 的 https 请求的翻译文本
Receiving no translated text from an https request to translate.google.com
现在我尝试通过 Roblox Studio 使用 Https 服务通过向 translate.google.com link 发送请求来像翻译一样,问题是我在 return 中得到的任何东西都没有给我翻译的文本。
我将收到的内容放入 google 文档中,并尝试通过按 ctrl + f 来找到它,但运气不好,我唯一能找到的是应该是的文本翻译。这是代码,以防您想自己尝试,但我警告您 运行 这可能会使 Roblox 暂时无响应,因为他们回馈了很多信息。
不知道是不是我做错了什么,请大家帮忙!我只是想让它给我 'Hello world' 法语的内容,也没有错误消息。
local http = game:GetService("HttpService")
local Message = "Hello world"
http:UrlEncode(Message) -- 'Hello world' -> 'Hello%20world'
local response = http:RequestAsync(
{
Url = "https://translate.google.com/?sl=en&tl=fr&text=" .. Message .. "!&op=translate";
Method = "GET"
}
)
if response.Success then
print(response.StatusMessage)
print(response.StatusCode)
print(response.Body)
--print(response.Headers)
else
print("The request failed: ", response.StatusCode, response.StatusMessage)
end
您的问题可能在于您如何 URL 对字符串进行编码。
http:UrlEncode(Message)
HttpService.UrlEncode returns 编码后的字符串作为新值。它不会改变现有值。所以你只需要存储函数调用的结果。
Message = http:UrlEncode(Message)
编辑:正如@Mohamed AMAZIRH 指出的那样,点击这个 URL 只会 return HTML.
在您的浏览器上访问时(例如)url https://translate.google.com/?sl=en&tl=fr&text=Hello%20World!&op=translate
,您看到的翻译是使用浏览器在加载页面后执行的 Javascript 代码获取的。
浏览器检索页面的 html 正文(就像您在代码中所做的那样),然后在 html 正文中执行 javascript 检索翻译并更新页。
除非你使用像 Selenium 这样的浏览器驱动程序,否则我看不出你如何以简单的方式做你想做的事。
另外,我确信 Google 有一些针对自动机器人的保护措施,因此在请求过多后,您的程序可能会被 ReCaptcha 阻止。
翻译文本的正确方法是使用 Microsoft 的 Google Cloud Translate API which I think is free up to 500k requests per month. There is also Azure Translator,它也有免费套餐。
现在我尝试通过 Roblox Studio 使用 Https 服务通过向 translate.google.com link 发送请求来像翻译一样,问题是我在 return 中得到的任何东西都没有给我翻译的文本。
我将收到的内容放入 google 文档中,并尝试通过按 ctrl + f 来找到它,但运气不好,我唯一能找到的是应该是的文本翻译。这是代码,以防您想自己尝试,但我警告您 运行 这可能会使 Roblox 暂时无响应,因为他们回馈了很多信息。
不知道是不是我做错了什么,请大家帮忙!我只是想让它给我 'Hello world' 法语的内容,也没有错误消息。
local http = game:GetService("HttpService")
local Message = "Hello world"
http:UrlEncode(Message) -- 'Hello world' -> 'Hello%20world'
local response = http:RequestAsync(
{
Url = "https://translate.google.com/?sl=en&tl=fr&text=" .. Message .. "!&op=translate";
Method = "GET"
}
)
if response.Success then
print(response.StatusMessage)
print(response.StatusCode)
print(response.Body)
--print(response.Headers)
else
print("The request failed: ", response.StatusCode, response.StatusMessage)
end
您的问题可能在于您如何 URL 对字符串进行编码。
http:UrlEncode(Message)
HttpService.UrlEncode returns 编码后的字符串作为新值。它不会改变现有值。所以你只需要存储函数调用的结果。
Message = http:UrlEncode(Message)
编辑:正如@Mohamed AMAZIRH 指出的那样,点击这个 URL 只会 return HTML.
在您的浏览器上访问时(例如)url https://translate.google.com/?sl=en&tl=fr&text=Hello%20World!&op=translate
,您看到的翻译是使用浏览器在加载页面后执行的 Javascript 代码获取的。
浏览器检索页面的 html 正文(就像您在代码中所做的那样),然后在 html 正文中执行 javascript 检索翻译并更新页。
除非你使用像 Selenium 这样的浏览器驱动程序,否则我看不出你如何以简单的方式做你想做的事。
另外,我确信 Google 有一些针对自动机器人的保护措施,因此在请求过多后,您的程序可能会被 ReCaptcha 阻止。
翻译文本的正确方法是使用 Microsoft 的 Google Cloud Translate API which I think is free up to 500k requests per month. There is also Azure Translator,它也有免费套餐。