我想将 N 个美国英语转换为其他一些语言。我有一个美国字符串为“JSON”格式,如下所示,
"AdminLocales": {
"-locale": "en_US",
"global": {
"search": "Search",
"noOrdersFound": "No Orders Found",
"prevPage": "Prev Page",
"nextPage": "Next Page"
},
"languageList": {
"1": {
"type": "Student",
"area": "Kovilpatti"
},
"2": {
"type": "Employee",
"area": "Tuticorin"
},
}
}
我想转换近 3000 个字符串。所以我反序列化了我的输入并循环了数据。这意味着我为每个字符串调用了谷歌翻译 API,所以我的 API 调用将是 3000 次。
因此,在该 API 中调用这么多时间时,我遇到了请求超时问题。就像下面的代码
<cfset myKey = 'abcd'>
<cfhttp url="https://translation.googleapis.com/language/translate/v2?key=#myKey#" method="post" charset="utf-8" result="getTokens">
<cfhttpparam type="header" name="Content-Type" value="application/json">
<cfhttpparam type="body" name="data" value="{
'q': 'Welcome',
'target': 'hi'
}">
</cfhttp>
我发现因为我们可以同时传递N个源字符串输入所以我传递它如下
<cfhttpparam type="body" name="data" value="{
'q': 'Welcome',
'q': 'Good Morning',
'q': 'Good Evening',
'q':'Welcome to all',
'q': 'Good night',
'target': 'hi'
}">
我得到了结果,因为输出与我通过的输入顺序相同,
" { "data": { "translations": [ { "translatedText": "स्वागत हे", "detectedSourceLanguage": "en" }, { "translatedText": "शुभ प्रभात", "detectedSourceLanguage": "en" }, { "translatedText": "सुसंध्या", "detectedSourceLanguage": "en" }, { "translatedText": "सभी का स्वागत हैं", "detectedSourceLanguage": "en" }, { "translatedText": "शुभ रात्रि", "detectedSourceLanguage": "en" } ] } } "
这对于正常测试来说很好。
现在回到我的输入,如何同时传递所有输入并与 https 调用的结果相匹配。因为我没有任何输入顺序。我有结构的结构,它是子结构等...从我的输入中,如果我传递为“搜索、上一页、下一页、Studen、Kovilpatti 等”(源字符串),它会返回相同的顺序。在这里,我如何匹配该特定结果是针对特定源字符串的。
谷歌会期望你传递一个密钥来识别正确的返回吗?