zoukankan      html  css  js  c++  java
  • 第三十四节(java-实现在线翻译)

    NameValue .java文件里:
    
    package com.tanzhou.util;
    /**
     * 参数拼接工具类
     * @author Ming
     * @version 1.0
     * 2015-2-7
     */
    public class NameValue {
     
        // &client=t&hl=zh-CN&ie=UTF-8&multires=1&oe=UTF-8&otf=1&prev=conf&psl=zh-CN&ptl=zh-CN&sc=1&sl=zh-CN&ssel=3&text=%E4%BD%A0%E5%A5%BD&tl=en&tsel=6
        
        private StringBuilder sb = new StringBuilder();
        
        /**
         * &参数=参数值&参数=参数值 ....
         * @param name 参数
         * @param value 参数值
         */
        public void add(String name,Object value){
            sb.append("&");
            sb.append(name);
            sb.append("=");
            sb.append(value);
        }
        
        public String toString(){
            return sb.toString();
        }
    }
    
    
    ///////////////////////////////////////////////////////////////////
    Test 文件里:
    
    package com.tanzhou.util;
    
    import org.apache.taglibs.standard.tag.common.xml.IfTag;
    
    public class Test {
       
        public static void main(String[] args){
            String str = Google.translate("晚上好!", "中文简体", "英语");
            
            if(str==null || "".equals(str)){
                System.out.println("失败");
            }else{
                System.out.println("成功!");
                
            //    [[["Good evening !","晚上好!","","Wǎnshàng hǎo!"]],,"zh-CN",,[["Good evening",[3],true,false,1000,0,2,1],["!",[4],false,false,1000,2,3,1]],[["好 晚上",3,[["Good evening",1000,true,false]],[[0,3]],"晚上好!"],["!",4,[["!",1000,false,false]],[[3,4]],""]],,,[["zh-CN"]],3]
                
                String s = Test.mid(str, "[[[", "]]");
                String[] ss = s.split(",");
                
                for(int i=0;i<ss.length;i++){
                    System.out.println(ss[i]);
                }
                
            }
        }
        
        /**
         * 截取字符串
         * @param value
         * @param left  [[[
         * @param right  ]]
         * @return
         */
        public static String mid(String value,String left,String right){
            int i = value.indexOf(left) +left.length();
            String str = value.substring(i, value.indexOf(right,i));
            return str;
        }
    }
    
    
    /////////////////////////////////////////////////////////////
    WebRequest 文件里:
    
    
    package com.tanzhou.util;
    
    import java.io.BufferedReader;
    import java.io.InputStreamReader;
    import java.net.HttpURLConnection;
    import java.net.MalformedURLException;
    import java.net.URL;
    
    /**
     * 调用接口的核心类
     * @author Ming
     * @version 1.0
     * 2015-2-7
     *
     */
    public class WebRequest {
    
        private static void setRequestHeader(HttpURLConnection conn){
            conn.setRequestProperty("User-Agent", "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0)");
            conn.setRequestProperty("Accept", "Accept: image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, application/x-shockwave-flash, application/vnd.ms-excel, application/vnd.ms-powerpoint, application/msword, */*");
            conn.setRequestProperty("Content-Type", "application/x-www-form-urlencoded");
        }
        
        /**
         * 访问接口的核心方法
         * @param url 接口路径
         * @return 返回的翻译信息
         */
        public static String get(String url){
            
            try {
                URL _url = new URL(url); // 将字符串信息转换成url对象
                // 通过路径打开链接
                HttpURLConnection conn = (HttpURLConnection)_url.openConnection();
                setRequestHeader(conn); // 设置接口的头信息
                // 读取数据
                BufferedReader bis = new BufferedReader(new InputStreamReader(conn.getInputStream(),"UTF-8"));
                
                String line = null;
                StringBuilder sb = new StringBuilder();
                while((line= bis.readLine())!=null){
                    sb.append(line);
                    sb.append("
    ");
                }
                bis.close();
                
                return sb.toString();
            } catch (Exception e) {
                e.printStackTrace();
            }
            
            return "";
        }
    }
    
    
    //////////////////////////////////////////////////////////////////
    Google .java文件里:
    
    package com.tanzhou.util;
    
    import java.io.UnsupportedEncodingException;
    import java.net.URLEncoder;
    import java.util.HashMap;
    import java.util.Map;
    
    import javax.ws.rs.Encoded;
    
    /**
     * 拼接URL的类
     * @author Ming
     * @version 1.0
     * 2015-2-7
     */
    public class Google {
    
        // http://translate.google.cn/translate_a/t?&client=t&hl=zh-CN&ie=UTF-8&multires=1&oe=UTF-8&otf=1&prev=conf&psl=zh-CN&ptl=zh-CN&sc=1&sl=zh-CN&ssel=3&text=%E4%BD%A0%E5%A5%BD&tl=en&tsel=6
        
        private static final Map<String, String> LANGUAGE = new HashMap<String, String>();
        
        // 静态块
        static{
            LANGUAGE.put("中文简体", "zh_CN");
            LANGUAGE.put("中文繁体", "zh_TW");
            LANGUAGE.put("英语", "en");
            LANGUAGE.put("日语", "ja");
        }
        
        /**
         *  翻译的类(拼接url)
         * @param value 要翻译的内容
         * @param src 要翻译内容的语种
         * @param target  目标语言的语种
         * @return
         */
        public static String translate(String value,String src,String target){
            String url = "http://translate.google.cn/translate_a/t?";
            
            src = LANGUAGE.get(src); // 将语种参数转换成计算机能够识别的编码
            target = LANGUAGE.get(target);
            
            NameValue form = new NameValue();
            form.add("client", "t");
            form.add("hl",src); // 要翻译的语种 src
            form.add("ie", "UTF-8");
            form.add("multires", 1);
            form.add("oe", "UTF-8");
            form.add("otf", 1);
            form.add("prev", "conf");
            form.add("psl", src);  // 要翻译的语种 src
            form.add("ptl", src); // 要翻译的语种 src
            form.add("sc", 1);
            form.add("sl", src);  // 要翻译的语种 src
            form.add("ssel", 3);
            form.add("text", encode(value,"UTF-8"));   // 要翻译的内容
            form.add("tl", target);// 目标语种
            form.add("tsel", 6);
            
            return WebRequest.get(url+form.toString());
        }
        
        public static String encode(String value,String charset){
            try {
                return URLEncoder.encode(value,charset);
            } catch (UnsupportedEncodingException e) {
                e.printStackTrace();
            }
            return null;
        }
        
        
        /**
         * 截取字符串
         * @param value
         * @param left  [[[
         * @param right  ]]
         * @return
         */
        public static String mid(String value,String left,String right){
            int i = value.indexOf(left) +left.length();
            String str = value.substring(i, value.indexOf(right,i));
            return str;
        }
    }
    
    
    
    ////////////////////////////////////////////////////////////
    google.jsp文件里:
    
    
    
    <%@ page language="java" import="java.util.*,com.tanzhou.util.*" pageEncoding="GBK"%>
    <%@ page contentType="text/html;charset=GBK" %>
    <%
    String path = request.getContextPath();
    String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
    request.setCharacterEncoding("UTF-8");
    %>
    
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
    <html>
      <head>
        <base href="<%=basePath%>">
        
        <title>My JSP 'google.jsp' starting page</title>
        
        <meta http-equiv="pragma" content="no-cache">
        <meta http-equiv="cache-control" content="no-cache">
        <meta http-equiv="expires" content="0">    
        <meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
        <meta http-equiv="description" content="This is my page">
        <!--
        <link rel="stylesheet" type="text/css" href="styles.css">
        -->
    
      </head>
      
      <body>
       <%
         String content = (String)request.getAttribute("content");
         String toContent =  (String)request.getAttribute("toContent");
          %>
         <form action="${pageContext.request.contextPath}/check.jsp" method="post">
         <table>
             <tr>
                 <td><select id="sel1" name="sel1">
                <option value="中文简体">中文简体</option>
                <option value="英语">英语</option>
                <option value="日语">日语</option>    
                <option value="韩语">韩语</option>
            </select>
            </td>
                 <td>
                 <select id="sel2" name="sel2">
                <option value="中文简体">中文简体</option>
                <option value="英语">英语</option>
                <option value="日语">日语</option>
                <option value="韩语">韩语</option>
            </select>
                 </td>
             </tr>
             <tr>
                 <td>
                 <textarea name= "content" cols= "40" rows= "5"><%=content==null? "" : content%></textarea>
                 </td>
                 <td>
                 <textarea name= "toContent" cols= "40" rows= "5"><%=toContent==null? "" : toContent%></textarea>
                 <input type="submit" value="翻译" />
                 </td>
             </tr>
         </table>
             
         </form>
        
      </body>
    </html>
    
    
    ///////////////////////////////////////////////////////////////////////
    check.jsp文件里:
    
    
    <%@ page language="java" import="java.util.*,com.tanzhou.util.*" pageEncoding="GBK"%>
    <%
    
        String sel1 = new String(request.getParameter("sel1").getBytes("ISO-8859-1"),"GBK"); // 要翻译的语种
        String sel2 =  new String(request.getParameter("sel2").getBytes("ISO-8859-1"),"GBK"); // 目标语种
        String content =  new String(request.getParameter("content").getBytes("ISO-8859-1"),"GBK"); // 要翻译的内容
        
        String str = Google.translate(content, sel1, sel2);
        System.out.println(str);
        if(str==null || "".equals(str)){
            System.out.println("失败");
        }else{
            System.out.println("成功!");
            
            String s = Google.mid(str, "[[[", "]]");
            String[] ss = s.split(",");
            
            request.setAttribute("content", content);
            // 剔除 引号
            request.setAttribute("toContent", ss[0].substring(1, ss[0].length()-1));
            request.getRequestDispatcher("google.jsp").forward(request, response);
        }
    
    %>
    
    
    ////////////////////////////////////////////////////////////////
    
    index.jsp文件里:
    
    <%@ page language="java" import="java.util.*" pageEncoding="ISO-8859-1"%>
    <script type="text/javascript">
      location.href="google.jsp";
    </script>
  • 相关阅读:
    如何阅读大型代码库?
    发现一个时隐时现的bug!
    写给开发者:记录日志的10个建议
    教你一眼认出英语单词的意思
    为什么我要使用一个20年前的IBM老键盘
    有了screen,妈妈再也不用担心我的学习啦
    一次优秀的代码提交应该包含什么?
    你需要的不是重构,而是理清业务逻辑
    Android中监听ListView滑动到底部
    Android中的Handler,Looper,Message机制
  • 原文地址:https://www.cnblogs.com/Deng1185246160/p/4279742.html
Copyright © 2011-2022 走看看