Roblox Studio通过HttpService请求谷歌翻译无返回译文问题求助
问题原因
- 你请求的是谷歌翻译的前端渲染页面,并非翻译接口。该页面返回的初始HTML仅包含页面框架和待翻译原文,翻译结果是页面加载后由JavaScript动态异步请求、渲染到页面上的,直接通过GET请求拿到的原始响应体里不存在翻译后文本。同时完整的前端页面HTML体积过大,是导致Roblox短时间无响应的直接原因。
- 你调用
http:UrlEncode(Message)后没有接收返回值,拼接到URL里的还是未做URL编码的原文本,遇到带特殊字符的翻译内容时会直接导致请求参数出错,属于代码逻辑疏漏。
修正后实现代码
使用谷歌翻译轻量公共查询接口,返回结果为结构精简的JSON,不会出现体积过大卡顿问题,可直接解析得到译文:
local http = game:GetService("HttpService") local Message = "Hello world" -- 接收URL编码后的返回值 local encodedMessage = http:UrlEncode(Message) local response = http:RequestAsync({ Url = "https://translate.googleapis.com/translate_a/single?client=gtx&sl=en&tl=fr&dt=t&q=" .. encodedMessage, Method = "GET" }) if response.Success then -- 解析返回的JSON结构 local translateResult = http:JSONDecode(response.Body) -- 译文存储在返回数组的第一层子数组的第一个元素位置 local translatedText = translateResult[1][1][1] print("翻译结果:"..translatedText) -- 输出为 Bonjour le monde else print("请求失败:", response.StatusCode, response.StatusMessage) end
注意事项
- 上述公共免费接口存在调用频率限制,短时间内请求次数过多可能会被临时限制IP访问,高频率商用场景建议申请谷歌官方翻译API使用。
内容的提问来源于stack exchange,提问作者Rayguyban2
相关产品推荐
相关产品推荐

