android - 如何将整段传递给 Google Translate API v2?

标签 android google-api translate

我使用 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 使社区能够使用简单的标记语言和网络浏览器协作编写文档。wiki 网站中的单个页面称为“wiki 页面”,而整个页面集合通常是通过超链接很好地相互连接的是“wiki”。wiki 本质上是一个用于创建、浏览和搜索信息的数据库。wiki 允许非线性的、不断发展的、复杂的和网络化的文本、论证和交互。”

所以基本上我的问题是如何将段落传递给 google translate api v2 并获得翻译后的回复?我用谷歌搜索了几篇文章,但找不到适合我的文章。

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

提前致谢。

最佳答案

为了解决这个问题,我将段落分解为具有预定义范围的多个字符串。所以它工作得很好。它只有一个问题,当我们使用预定义范围时它会破坏单词,因此无法翻译。否则有效:

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();
                    }

关于android - 如何将整段传递给 Google Translate API v2?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17993316/

相关文章:

java - Android - 为什么我们应该使用 adapter.notifydatasetChanged() 方法?

java - 如何在 Blogger Google API 中指定访问 token 来插入帖子?

java - 在 java 中第二次出现逗号后删除字符串

jquery - 更改 iframe 中的文本内容

php - Zend_Translate 翻译电子邮件模板

android - 如何在android中实现UI自动化?

php - Android/PHP - JSONParser 无法将网页内容作为 JsonObject 获取

android - Android 中的 PlaceholderFragment

javascript - 带线条的 Google API 饼图

Android 应用程序 - 我还必须翻译应用程序商店列表吗?