2014-02-26 100 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。

相關問題