2014-02-26 98 views
1

我已经成功在Windows Azure市场上注册,并且我有clientID和客户端密钥,但我不知道如何在aspx页面中使用它们来翻译文本框所需语言的文本。我有这个代码,但我不知道如何使用它。 我应该在webservice中写下面的代码吗?如果是,那么在web服务的时候,它反映了AdmAccessToken错误和AdmAccessToken无法在客户端ID和客户端秘密后使用Microsoft翻译器

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

请帮助别人,这样我可以在任何其他的翻译我的文本框的文字语言。

回答

0

首先,添加一个服务引用到Microsoft译者:

添加MS转换参考

右键单击参考 - >添加服务引用,键入http://api.microsofttranslator.com/V2/soap.svc地址字段并点击转到按钮。将服务命名为MsTranslatorService

然后,将下面的代码添加到Defaults.aspx关注[YOUR_APP_NAMESPACE](可能由默认与解决方案的名称一致,或者你可以看到它的“继承”页面属性)和[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。

相关问题