1

我已经在 Windows azure Marketplace 上成功注册,并且我有一个 clientID 和客户端密码,但我不知道如何在 aspx 页面中使用它们来翻译所需语言的文本框文本。我有这个代码,但我不知道如何使用它。我应该在webservice中写下面的代码吗???如果是,那么在编写 webservice 时,它​​反映了AdmAccessTokenAdmAccessToken

 [System.Web.Services.WebMethod]
    public static AdmAccessToken GetAccessToken()
    {
        AdmAccessToken admToken;
        string headerValue;
        //Get Client Id and Client Secret from https://datamarket.azure.com/developer/applications/
        AdmAuthentication admAuth = new AdmAuthentication("clientid", "clientsecret");

        admToken = admAuth.GetAccessToken();
        // Create a header with the access_token property of the returned token
        headerValue = "Bearer" + " " + HttpUtility.UrlEncode(admToken.access_token);

        return admToken;
    } 

这是页面上的代码

<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
    <title></title>
    <script type="text/javascript">
        var languageFrom = "en";
        var languageTo = "de";
        var text = "Use pixels to express measurements for padding and margins.";
        function translate() {
            PageMethods.GetAccessToken(OnSucceeded, OnFailed);

        }
        function OnSucceeded(result, usercontext, methodName) {

            window.mycallback = function (response) {
                document.getElementById('<%= lblResult.ClientID %>').innerHTML = "Translation for <br />source text: '" + text + "'<br /> from en to de <br /> " + response;
            }

            var s = document.createElement("script");
            s.src = "http://api.microsofttranslator.com/V2/Ajax.svc/Translate?oncomplete=mycallback&appId=Bearer " + encodeURIComponent(result.access_token) + "&from=" + languageFrom + "&to=" + languageTo + "&text=" + text;
            document.getElementsByTagName("head")[0].appendChild(s);
        }
        function OnFailed(error, userContext, methodName) {
            alert("Error");
        }
    </script>
</head>
<body>
    <form id="form1" runat="server">
    <div>
        <asp:ScriptManager ID="ScriptManager" runat="server" EnablePageMethods="true" />
        <asp:Button ID="buttonTranslate" runat="server" Text="Translate" OnClientClick="translate();return false;" />
        <br />
        <asp:Label ID="lblResult" runat="server"></asp:Label>
    </div>
    </form>
</body>
</html>

请帮助某人,以便我可以将我的文本框文本翻译成任何其他语言。

4

1 回答 1

0

首先,将服务引用添加到 Microsoft Translator:

添加 MS 转换器参考

右键单击References -> Add Service Reference ,在地址字段中键入http://api.microsofttranslator.com/V2/soap.svc并单击Go按钮。将该服务命名为MsTranslatorService

然后,将以下代码添加到 Defaults.aspx 中,注意[YOUR_APP_NAMESPACE](默认情况下可能与解决方案名称一致,或者您可以在“Inherits”页面属性中看到它)和[YOUR_APP_ID]

<script language="C#" runat="server">

      void SubmitBtn_Click(object sender, EventArgs e) 
      {
         var ms = new [YOUR_APP_NAMESPACE].MsTranslatorService.LanguageServiceClient();
         ms.Open();
         var appId = "[YOUR_APP_ID]";
         var str = "Use pixels to express measurements for padding and margins.";
         var tar = ms.Translate(appId, str, "en", "de", null, "General");
         lblResult.Text = "Translation: " + tar; 
         ms.Close();
         ms = null;
      }

   </script>

然后,确保您的按钮代码具有适当的 OnClick 属性:

<asp:Button ID="buttonTranslate" runat="server" Text="Translate" OnClick="SubmitBtn_Click" runat="server"/>

然后构建页面并享受!

编辑:http://blogs.msdn.com/b/translation/p/gettingstarted2.aspx 描述了另一种方式,但我没有检查过。请注意,他们使用的是http://api.microsofttranslator.com/v2/Http.svc/Translate方法,而不是您提到的 Ajax。

于 2015-02-17T11:03:20.193 回答