0

我在 Bing News Search 中查询中国、马来西亚、俄罗斯等国外市场。结果并不总是英文的。有没有我可以设置的方法或参数将所有结果翻译成英文?

或者我是否必须通过调用不同的语言翻译 A​​PI 与 Bing 新闻搜索 API 分开执行此操作?setLang 参数似乎不起作用。

4

1 回答 1

1

从官方文档看,setLang不应该用来设置搜索结果的语言。我查了官方文件。2012 年,微软推荐使用JSON Code Sample (Web SourceType). 我测试了一下,没有生效。您可以查看相关帖子。

必应搜索 API - 如何本地化结果?

因为现有的资料太旧了,都是很多年前的文件。所以我推荐使用微软的Translator.

下面我提供示例代码,替换 和 的值OcpApimSubscriptionKey1OcpApimSubscriptionKey1可以OcpApimSubscriptionRegion直接运行。效果图如下。

笔记:

1、提供的示例代码只是一个参考代码,在生产环境中使用时需要考虑特殊字符的处理。

2. 示例代码非最优示例代码只是我的示例。

在此处输入图像描述

<!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>

于 2020-09-11T07:03:44.013 回答