以下は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のファイルが大きなものとしてカウントされているのでしょうか?もし多分誰かがリンクを見て、リンクの答えに従って私のコードを修正することができます。私は今はたくさん試してみましたが、本当にそれを理解していませんでした。しかし、まず最初に私の元のコードがなぜ機能しないのかを知る必要があります。あなたのプロジェクトで
他のネームスペースdllをjavaスクリプトと関係があるとは思わないかもしれません。 – user1363119
スティーブはリンクのdllを修正してdatacontractを修正しましたが、まだ私はTranslationRootObjectを修正する方法を見つけることができませんでした。 – user1363119
次のようなものです:Google.Apis.Translate.v2; Google.Apis.Translate.v2.Dataを使用しています。 Google.Apis.Translate.v2.Data.TranslationsResourceを使用しています。それらは1つのアセンブリでも複数でも構いません。 –