2013-08-01 65 views
2

我已经使用翻译api v2翻译简单的单词或text.but现在我想翻译整个段落。我试图通过整段,但它没有奏效。如何将整段传递给Google Translate API v2?

这是我的代码:

public String requestTranslation(String txt, String src, String dst) 
    { 
     if(txt.length()>0) 
     { 
      String request = requestURL + requestKey + requestSrc + src + requestDst + dst + requestTxt; 
      StringBuffer sb = new StringBuffer(); 
      try { 
       request += URLEncoder.encode(txt, "UTF-8"); 
       URL url = new URL(request); 
       URLConnection connection = url.openConnection(); 
       connection.setConnectTimeout(0); 
       connection.connect(); 

       InputStreamReader inputStreamReader = new InputStreamReader(connection.getInputStream(), "UTF-8"); 
       BufferedReader in = new BufferedReader(inputStreamReader, 512); 

       String line; 
       while ((line = in.readLine()) != null) { 
        sb.append(line); 
       } 
       in.close(); 

       JSONObject jObj; 
       JSONArray data = null; 

        jObj = new JSONObject(sb.toString()); 
        jObj = jObj.getJSONObject("data"); 
        data = jObj.getJSONArray("translations"); 

        for(int i = 0; i < data.length(); i++) 
        { 
         JSONObject c = data.getJSONObject(i); 
         // Storing each json item in variable 
         txt = c.getString("translatedText"); 
        } 
        return txt; 
       //return sb.toString(); 
      } 
      catch (Exception e) 
      { 
       e.printStackTrace(); 
      } 

     } 
     return null; 
    } 

我已经通过了文字 “你怎么样?”它的工作完美。但是,当我传递整个段落然后它从http连接得到异常。

段落是这样的:

“维基使社区协作编写文档,使用简单的标记语言和网络浏览器在维基网站的单页作为一个参考。‘wiki页面’,而整个网页集合通常都是通过超链接相互连接的,它就是“维基”。维基本质上是一个用于创建,浏览和搜索信息的数据库。维基允许非线性,不断发展,复杂和网络化的文本,争论和互动“。

所以基本上我的问题是我怎么可以通过段谷歌翻译api v2并获得翻译响应?我GOOGLE了几个职位,但无法找到任何适用于我的作品。

希望你们明白我想要什么。

在此先感谢。

回答

1

为了解决这个问题,我已经将段落划分为多个具有预定义范围的字符串。所以它的工作很好。它只有一个问题,当我们使用预定义范围时它会打破这个词,所以它不能被翻译。否则它的工作原理:

StringBuilder sb = new StringBuilder(); 
        if(Message.length()>200) 
        { 
         //sb.append(requestTranslation(Message,"en", "gu")); 
         for(int i=0;i<Message.length();) 
         { 
          if(i+200<=Message.length()) 
          { 
           sb.append(requestTranslation(Message.substring(i, i+200),"en", "gu")); 
           i+=200; 
          } 
          else 
          { 
           sb.append(requestTranslation(Message.substring(i, Message.length()),"en", "gu")); 
           i+=200; 
          } 
         } 
         Log.d("Translated Text:- ", sb.toString()); 
         Message = sb.toString(); 
        }