2012-04-28 18 views
0

以下はGoogle翻訳を使用するためのコードです。私はリファレンスとして追加した1つのdllを持っています:Google.Apis.Translate.V2
私はGoogle Translate APIキーも購入しました。名前空間がないためGoogle Translate APIを使用できません

私はより多くを必要とするDLLかわからないので、5個のエラーがあります。これらのオブジェクトは、名前空間が不足して存在しません:DataContractJsonSerializer、TranslationRootObject、TranslationRootObject

私はこれらの名前空間のために必要なのですかどのようなDLLの参照を?

これは私のAPIキーがないと、私のコードです:

using System; 
using System.Collections.Generic; 
using System.ComponentModel; 
using System.Data; 
using System.Drawing; 
using System.Linq; 
using System.Text; 
using System.Windows.Forms; 
using System.Net; 
using System.IO; 
using System.Web; 

namespace Google_Translate 
{ 
    public partial class Form1 : Form 
    { 
     static string apiKey = ""; 

     static string texttotranslate = "hello world"; 
     string text; 
     static String apiUrl = "https://www.googleapis.com/language/translate/v2?key={0}&source={1}&target={2}&q={3}"; 
      static String url = String.Format(apiUrl, apiKey, "en", "ge", texttotranslate); 
      Stream outputStream = null; 

     byte[] bytes = Encoding.ASCII.GetBytes(url); 

     // create the http web request 
     HttpWebRequest webRequest = (HttpWebRequest)WebRequest.Create(url); 



     public Form1() 
     { 
      InitializeComponent(); 

      webRequest.KeepAlive = true; 
      webRequest.Method = "POST"; 
      // Overrride the GET method as documented on Google's docu. 
      webRequest.Headers.Add("X-HTTP-Method-Override: GET"); 
      webRequest.ContentType = "application/x-www-form-urlencoded"; 
      // send POST 
      try 
      { 
       webRequest.ContentLength = bytes.Length; 
       outputStream = webRequest.GetRequestStream(); 
       outputStream.Write(bytes, 0, bytes.Length); 
       outputStream.Close(); 
      } 
      catch (HttpListenerException e) 
      { 
       /*...*/ 
      } 

      translate(); 
     } 

     private void Form1_Load(object sender, EventArgs e) 
     { 

     } 

     private string translate() 
     { 
      try 
     { 
      // get the response 
      HttpWebResponse webResponse = (HttpWebResponse)webRequest.GetResponse(); 
      if (webResponse.StatusCode == HttpStatusCode.OK && webRequest != null) 
      { 
       // read response stream 
       using (StreamReader sr = new StreamReader(webResponse.GetResponseStream(), Encoding.UTF8)) 
       { 
        string lista = sr.ReadToEnd(); 

        DataContractJsonSerializer serializer = new DataContractJsonSerializer(typeof(TranslationRootObject)); 
        MemoryStream stream = new MemoryStream(Encoding.UTF8.GetBytes(lista)); 
        TranslationRootObject tRootObject = (TranslationRootObject)serializer.ReadObject(stream); 
        string previousTranslation = string.Empty; 

        //deserialize 
        for (int i = 0; i < tRootObject.Data.Detections.Count; i++) 
        { 
         string translatedText = tRootObject.Data.Detections[i].TranslatedText.ToString(); 
         if (i == 0) 
         { 
          text = translatedText; 
         } 
         else 
         { 
          if (!text.Contains(translatedText)) 
          { 
           text = text + " " + translatedText; 
          } 
         } 
        } 
        return text; 
       } 
      } 
     } 
     catch (HttpListenerException e) 
     { 
      /*...*/ 
     } 

     return text; 



     } 
    } 
} 

誰かが私のコードを修正するかいただきましたが間違ってください教えてもらえますか?

私が必要とするのは、29-33kbのテキストファイルのサイズを翻訳することです。Google翻訳サイトを使用しているときにオンラインでできるだけ高速に翻訳できるかどうかは疑問です。

私はこのリンクを見つけましたGoogle Translate V2 cannot hanlde large text translations from C#誰かが大きなファイルを翻訳できないと言っているので、29-33kbのファイルが大きなものとしてカウントされているのでしょうか?もし多分誰かがリンクを見て、リンクの答えに従って私のコードを修正することができます。私は今はたくさん試してみましたが、本当にそれを理解していませんでした。しかし、まず最初に私の元のコードがなぜ機能しないのかを知る必要があります。あなたのプロジェクトで

答えて

0

、このアセンブリへの参照を追加します。

http://msdn.microsoft.com/en-us/library/system.runtime.serialization.json.datacontractjsonserializer.aspx

あなたが必要とする他の人があるかもしれません、私はこの1つだけを見上げました。

+0

他のネームスペースdllをjavaスクリプトと関係があるとは思わないかもしれません。 – user1363119

+0

スティーブはリンクのdllを修正してdatacontractを修正しましたが、まだ私はTranslationRootObjectを修正する方法を見つけることができませんでした。 – user1363119

+0

次のようなものです:Google.Apis.Translate.v2; Google.Apis.Translate.v2.Dataを使用しています。 Google.Apis.Translate.v2.Data.TranslationsResourceを使用しています。それらは1つのアセンブリでも複数でも構いません。 –

関連する問題