我想制作一个将文本翻译成英语(无论输入哪种语言)的应用程序。翻译工作已经很好,但是现在我试图检测输入的语言,而且我不知道如何从LanguageApp.translate获取检测到的语言。
我尝试使用google API,但由于它是付费的,我需要一个免费的意见,因为这是一个仅对我而言非商业用途的小项目。
var translatedText = LanguageApp.translate(sourceText, sourceLang, targetLang, {contentType: 'html'});
return ContentService.createTextOutput(translatedText).setMimeType(ContentService.MimeType.JSON);
指定了sourceText和targetLang(目标语言)。 sourceLang是“”(空),因此Google翻译会自动检测到它。
我想将检测到的语言添加到返回的字符串中。例如,如果我输入“ bonjur”,它将返回“ hellofr”,fr代表法语。
答案 0 :(得分:0)
如果您分析手动获取的翻译请求的响应,例如
var response = UrlFetchApp.fetch('https://translate.google.com/#view=home&op=translate&sl=auto&tl=en&text=pantalla');
Logger.log(response.getAllHeaders())
您将看到响应中不包含有关检测到的源语言的任何详细信息。 Google必须使用附加的API在服务器端进行处理。因此,很遗憾,您无法使用Apps脚本中的LanguageApp功能来检索自动检测到的语言。
作为一种解决方法,除了使用LanguageApp进行翻译外,建议您在Apps脚本中调用外部语言检测API。
答案 1 :(得分:0)
您可以使用外部api,例如detectlanguage.com。 他们的免费帐户每天提供1000个请求。
tree
现在在您的代码中使用此
// Get your APIkey at https://www.detectlanguage.com
// Replace it in 'yourApiKeyHere'
function detectLanguage(text) {
var payload = {
"q": text
};
var options = {
"method" : "post",
"payload" : payload,
"headers" : {
"Authorization" : "Bearer " + yourApiKeyHere
}
};
var url = "https://ws.detectlanguage.com/0.2/detect";
var response = UrlFetchApp.fetch(url, options);
Logger.log(response.getContentText());
// response: {"data":{"detections":[{"language":"nl","isReliable":true,"confidence":11}]}}
return JSON.parse(response.getContentText()).data.detections[0].language;
}