2

我想将 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 等”(源字符串),它会返回相同的顺序。在这里,我如何匹配该特定结果是针对特定源字符串的。

谷歌会期望你传递一个密钥来识别正确的返回吗?

4

1 回答 1

0
于 2019-05-16T11:49:08.577 回答