Bing 新闻搜索 API 结果的语言翻译?
Bing News Search API language translation of results?
我正在查询 Bing News Search for foreign markets like China, Malaysia, Russia etc. 结果并不总是英文的。有没有我可以设置的方法或参数将所有结果翻译成英语?
或者我是否必须通过调用不同的语言翻译 API 与 Bing 新闻搜索 API 分开执行此操作? setLang 参数似乎不起作用。
从官方文档来看,setLang
不应该用来设置搜索结果的语言。我查了官方文件。 2012 年,Microsoft 推荐使用 JSON Code Sample (Web SourceType)
。我测试了一下,没有生效。您可以查看相关帖子。
Bing search API - How to localize results?
由于现存资料太旧,都是很多年前的文献。所以我推荐使用微软的Translator
.
下面我提供了示例代码,将OcpApimSubscriptionKey1
和OcpApimSubscriptionKey1
和OcpApimSubscriptionRegion
的值直接替换为运行即可。效果图如下
注:
1.提供的示例代码只是参考代码,生产环境使用需要考虑特殊字符的处理。
2。示例代码 non-optimal 示例代码只是我的示例。
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Translate</title>
<script src="https://code.jquery.com/jquery-3.5.1.js" integrity="sha256-QWo7LDvxbWT2tbbQ97B53yJnYU3WhH/C8ycbRAkjPDc=" crossorigin="anonymous"></script>
<script>
var OcpApimSubscriptionKey1="267****6fac1978";
var OcpApimSubscriptionKey2="00d****bff196393";
var OcpApimSubscriptionRegion="koreacentral";
var tmp_jsonstr="";
$(document).ready(function(){
})
function bingnewssearch(){
$.ajax({
url: 'https://panshubeicognitiveservices.cognitiveservices.azure.com/bing/v7.0/news/search?q='+$("#keywords").val()+"&mkt=zh-CN&setLang=EN&cc=EN&count=5",
method: 'GET',
contentType: "application/x-www-form-urlencoded; charset=urf-8",
dataType: 'json',
beforeSend: function (xhr) {
xhr.setRequestHeader('Ocp-Apim-Subscription-Key', OcpApimSubscriptionKey1);
},
success:function(result){
var myJSON = JSON.stringify(result);
tmp_jsonstr=myJSON;
$("#orginresult").html(myJSON)
},
error:function(){
alert("Oop, No Data Response");
}
})
}
function translatejson(){
var str="[{\"Text\":\""+tmp_jsonstr.replace(/\"/g,"'")+"'\"}]";
var jsonData=eval( str);//JSON.parse(str);
$.ajax({
url: "https://api.cognitive.microsofttranslator.com/translate?api-version=3.0&from=zh-Hans&to=en",
method: 'POST',
contentType: "application/json; charset=UTF-8",
dataType: 'json',
data:str,
beforeSend: function (xhr) {
xhr.setRequestHeader('Ocp-Apim-Subscription-Key', OcpApimSubscriptionKey2);
xhr.setRequestHeader('Ocp-Apim-Subscription-Region', OcpApimSubscriptionRegion);
},
success:function(result){
var myJSON1 = JSON.stringify(result);
var str=result[0].translations[0].text;
str="{"+str.replace(/'/g, '"')+"}"
$("#translatedresult").html(str)
},
error:function(){
alert("Oop, No Data Response");
}
})
}
</script>
</head>
<body>
<div>
<div><p>Bing News Search</p></div>
<div>
<input type="text" id="keywords" placeholder="key words"/>
</div>
<div>
<button onclick="bingnewssearch()">Search</button>
</div>
<div>Orgin Result</div>
<div>
<span id="orginresult"></span>
</div>
</div>
<hr/>
<div>
<div>
<button onclick="translatejson()">translate orgindata</button>
</div>
<div>
<span id="translatedresult"></span>
</div>
</div>
</body>
</html>
我正在查询 Bing News Search for foreign markets like China, Malaysia, Russia etc. 结果并不总是英文的。有没有我可以设置的方法或参数将所有结果翻译成英语?
或者我是否必须通过调用不同的语言翻译 API 与 Bing 新闻搜索 API 分开执行此操作? setLang 参数似乎不起作用。
从官方文档来看,setLang
不应该用来设置搜索结果的语言。我查了官方文件。 2012 年,Microsoft 推荐使用 JSON Code Sample (Web SourceType)
。我测试了一下,没有生效。您可以查看相关帖子。
Bing search API - How to localize results?
由于现存资料太旧,都是很多年前的文献。所以我推荐使用微软的Translator
.
下面我提供了示例代码,将OcpApimSubscriptionKey1
和OcpApimSubscriptionKey1
和OcpApimSubscriptionRegion
的值直接替换为运行即可。效果图如下
注:
1.提供的示例代码只是参考代码,生产环境使用需要考虑特殊字符的处理。
2。示例代码 non-optimal 示例代码只是我的示例。
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Translate</title>
<script src="https://code.jquery.com/jquery-3.5.1.js" integrity="sha256-QWo7LDvxbWT2tbbQ97B53yJnYU3WhH/C8ycbRAkjPDc=" crossorigin="anonymous"></script>
<script>
var OcpApimSubscriptionKey1="267****6fac1978";
var OcpApimSubscriptionKey2="00d****bff196393";
var OcpApimSubscriptionRegion="koreacentral";
var tmp_jsonstr="";
$(document).ready(function(){
})
function bingnewssearch(){
$.ajax({
url: 'https://panshubeicognitiveservices.cognitiveservices.azure.com/bing/v7.0/news/search?q='+$("#keywords").val()+"&mkt=zh-CN&setLang=EN&cc=EN&count=5",
method: 'GET',
contentType: "application/x-www-form-urlencoded; charset=urf-8",
dataType: 'json',
beforeSend: function (xhr) {
xhr.setRequestHeader('Ocp-Apim-Subscription-Key', OcpApimSubscriptionKey1);
},
success:function(result){
var myJSON = JSON.stringify(result);
tmp_jsonstr=myJSON;
$("#orginresult").html(myJSON)
},
error:function(){
alert("Oop, No Data Response");
}
})
}
function translatejson(){
var str="[{\"Text\":\""+tmp_jsonstr.replace(/\"/g,"'")+"'\"}]";
var jsonData=eval( str);//JSON.parse(str);
$.ajax({
url: "https://api.cognitive.microsofttranslator.com/translate?api-version=3.0&from=zh-Hans&to=en",
method: 'POST',
contentType: "application/json; charset=UTF-8",
dataType: 'json',
data:str,
beforeSend: function (xhr) {
xhr.setRequestHeader('Ocp-Apim-Subscription-Key', OcpApimSubscriptionKey2);
xhr.setRequestHeader('Ocp-Apim-Subscription-Region', OcpApimSubscriptionRegion);
},
success:function(result){
var myJSON1 = JSON.stringify(result);
var str=result[0].translations[0].text;
str="{"+str.replace(/'/g, '"')+"}"
$("#translatedresult").html(str)
},
error:function(){
alert("Oop, No Data Response");
}
})
}
</script>
</head>
<body>
<div>
<div><p>Bing News Search</p></div>
<div>
<input type="text" id="keywords" placeholder="key words"/>
</div>
<div>
<button onclick="bingnewssearch()">Search</button>
</div>
<div>Orgin Result</div>
<div>
<span id="orginresult"></span>
</div>
</div>
<hr/>
<div>
<div>
<button onclick="translatejson()">translate orgindata</button>
</div>
<div>
<span id="translatedresult"></span>
</div>
</div>
</body>
</html>