`
martintree
  • 浏览: 25484 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

(转)利用Google在线翻译引擎制作自己的多国语言翻译机

阅读更多
出处:http://www.blogjava.net/ekinglong/archive/2006/11/12/80704.html?Pending=true#Post

本文介绍如何利用Google在线翻译引擎来制作自己的多国语言翻译器。本程序利用Google的在线翻译引擎实现汉语到英语,英语到汉语,英语到日语的单词,整句的翻译。因为是在命令行运行,不支持\n,不能对文章、段落进行翻译,不过稍微做一个Application 程序扩展一下就可以了。
本类可以直接在命令行下使用:
java ekinglong.languageEngine.GoogleTranslationEngine2 [text] [langpair]


说明:
[text]表示要翻译的文本,可以有空格,这样支持英语的整句翻译。
[langpair]是指定翻译语言对值。这个翻译引擎类支持“汉语译英语”,“英语译汉语”和“英语译日语”,它们分别对应的翻译语言对值是:cn-en , en-cn , en-ja。

示例如下:
示例1:将英语“hello”翻译成“日语”
java ekinglong.languageEngine.GoogleTranslationEngine2 hello en - ja


结果1:
翻译内容:hello
Google翻译结果:こんにちは

示例2:翻译英文句子“hello, the world!”到中文。

java ekinglong.languageEngine.GoogleTranslationEngine2 hello,the world !  en - cn


结果2:
翻译内容:hello, the world !
Google翻译结果:你好,世界 !

示例3:将汉语“你好 世界”翻译成英语
java ekinglong.languageEngine.GoogleTranslationEngine2  你好 世界 cn - en


结果3:
翻译内容:你好 世界
Google翻译结果:Hello world

下面是实现代码:
/** */ /**
 * 利用Google在线翻译引擎实现多国语言互译
 * 这里只使用google的对译项目
 * 目前只针对中日英,且因为google不提供中日直接互译,
 * 所以,此引擎也不能进行中日对译
 * 
 *  @author  ekinglong
 *  @version  1.0 06/10/30
  */

package  ekinglong.languageEngine;
 
  import  java.io. * ;
  import  java.net. * ;
 
  public   class  GoogleTranslationEngine2 {
     
      // 定义互译语言对常数变量,符合google页面相关对译语言对的值
      public   static   final  String LANGPAIR_CN_EN = " zh-CN|en " ; // 汉语到英语
      public   static   final  String LANGPAIR_EN_CN = " en|zh-CN " ; // 英语到汉语
      public   static   final  String LANGPAIR_EN_JA = " en|ja " ; // 英语到日语
     
      // 定义编码常数
      public   static   final  String CHARSET_CN = " GBK " ;
      public   static   final  String CHARSET_JA = " Shift_JIS " ;
     
      // google在线翻译引擎url
      static   final  String engineUrl = " http://translate.google.com/translate_t " ; 
     
      /** */ /**
      * 利用google在线翻译引擎实现翻译,并获取翻译内容
      *  @param  translateText 要翻译的文本内容
      *  @param  langpair 对译语言的值对,如en|ja是由英语翻译到日语
       */
      public  String translate(String translateText,String langpair) 
          throws  MalformedURLException,IOException,UnsupportedEncodingException {
         
          // text是google翻译页面提交时对于欲翻译文字的变量名
          // langpair是google翻译页面提交时对于采用何种互对语言的变量名
         String urlstr = engineUrl + " ?text= " + encodeText(translateText) + " &langpair= " + langpair;
         URL url  =   new  URL(urlstr);
         URLConnection connection  =  (HttpURLConnection)url.openConnection();
         connection.setRequestProperty( " User-agent " , " IE/6.0 " );  // 必须,否则报错,到于FF的怎么写,没做过测试        
         connection.connect();
         
         String charset = getCharsetFromLangpair(langpair); // 自动获取目标语言的编码
         BufferedReader in = new  BufferedReader( new
          InputStreamReader(connection.getInputStream(),charset)); // 使用指定编码接收数据
                          
         String line = null ;
         StringBuilder sb = new  StringBuilder();
          while ((line = in.readLine()) != null ) {
             sb.append(line);
         }
         in.close();          
         
         String translation = getContent(sb.toString());
          return  translation;
     }
     
      /** */ /**
      * 从获得的源文件中剥取翻译内容
      * 分析google翻译生成的html源码来看
      * 翻译内容被置于<div id=result_box dir=ltr>和</div>标签之间
      *  @param  htmltext 获得的网业源代码
       */
      private  String getContent(String htmltext) {
         String ss = " <div id=result_box dir=ltr> " ; 
         String se = " </div> " ;
          int  ssidx = htmltext.indexOf(ss);
          int  seidx = htmltext.indexOf(se,ssidx);
         
         String restr = htmltext.substring(ssidx + ss.length(),seidx);
          return  restr;
     }
     
      // 将文本进行URL编码
      private  String encodeText(String text) {
         String str = java.net.URLEncoder.encode(text);
          return  str;
     }
     
      /** */ /**
      * 根据翻译的目标语言获取对应的接收编码
      *      
      * @langpair 对译语言的值对,如en|ja是由英语翻译到日语
       */
      private  String getCharsetFromLangpair(String langpair) {
          // 当翻译的目标语言为日语时,采用Shift+JIS编码接收数据
          if (langpair.equals(LANGPAIR_EN_JA))
              return  CHARSET_JA;          
          else   return  CHARSET_CN;
     }
     
      public   static   void  main(String[] args)  throws  Exception {
         GoogleTranslationEngine2 engine = new  GoogleTranslationEngine2();
         String text = " hello " ;
         String langpair = " en|ja " ;
          if (args.length >= 2 ) {
             StringBuilder sb = new  StringBuilder();
              for ( int  i = 0 ;i < args.length - 1 ;i ++ ) {
                 sb.append(args[i]).append( "   " );
             }
             text = sb.toString();
             String tmp = args[args.length - 1 ];
              // 因为在cmd.exe中|是特殊字符,所以不能直接指定翻译对,如"en|ja"所以转一下
              if (tmp.equals( " cn-en " )) langpair = GoogleTranslationEngine2.LANGPAIR_CN_EN;
              else   if (tmp.equals( " en-cn " )) langpair = GoogleTranslationEngine2.LANGPAIR_EN_CN;
              else   if (tmp.equals( " en-ja " )) langpair = GoogleTranslationEngine2.LANGPAIR_EN_JA;             
              else   throw   new  Exception( " 语言对指定错误 " );
         }
         String rst = engine.translate(text,langpair);
         System.out.println( " 翻译内容: " + text);
         System.out.println( " Google翻译结果: " + rst);
     }
 } 



分享到:
评论

相关推荐

    PHP对接百度翻译接口API 实现多国语言翻译

    PHP对接百度翻译接口API 实现多国语言翻译

    使用C#轻松实现多国语言之间的在线翻译

    "使用C#轻松实现多国语言之间的在线翻译" 本文主要讲解了使用 C# 实现多国语言之间的在线翻译系统,通过使用 Web 服务架构,实现了在线翻译系统的开发。下面是相关的知识点: 1. Web 服务架构:Web 服务架构是近几...

    多国语言在线客服 AI智能客服 多国语言交流网站 多商户机器人 im即时通讯聊天 翻译多国语言在线翻译.zip

    20国语言在线客服/AI智能客服/消息预知已读未读/多商户机器人/im即时通讯聊天 1.新增客服坐席消息互动,客服之间可以互相接收消息 2.新增消息预知功能,可提前预知访客已输入未发送的消息显示 3.重构wk通信接口,...

    多国语言在线翻译

    标题中的“多国语言在线翻译”指的是利用网络技术实现不同国家和地区的语言之间的转换功能。这一技术基于互联网,使得用户可以方便快捷地将文本从一种语言翻译成另一种语言,极大地促进了全球信息交流与理解。 在...

    多国语言翻译软件 v1.0.zip

    多国语言翻译软件是一款可以实现多国语言间相互翻译的软件。 多国语言翻译软件功能特点: 1.可以进行多个国家语言的翻译 进行学习 有:中---&gt;英,中---&gt;日,中---&gt;法,中---&gt;俄,中---&gt;泰,中---...

    多国语言在线翻译机V1.0

    软件名称: 多国语言在线翻译机V1.0 支持系统: 所有系统 软件作者: 许愿の猪 版权所属: 默默游戏社区 支持网站: http://www.mmosq.com 软件简介: 支持多国语言在线翻译,但必须联网 原帖地址: 【原创...

    C# 多国语言翻译 百度翻译 基于百度翻译多国语言翻译工具 源码 实例

    在本文中,我们将深入探讨如何使用C#编程语言构建一个基于百度翻译的多国语言翻译工具。这个工具能够实现批量翻译和自动翻译的功能,极大地提高了工作效率。为了开始我们的讨论,首先需要了解几个关键概念。 1. **...

    最新多国语言翻译软件

    为了打破这道障碍,多国语言翻译软件应运而生,成为帮助人们跨越语言界限的利器。本文将对一款名为“最新多国语言翻译软件”的应用进行深度解析,探讨其功能特点和用户体验,为需要语言翻译工具的用户提供参考。 ...

    Qt / Qml 中支持多国语言

    在开发跨地域的应用程序时,支持多国语言是至关重要的,Qt 和 Qml 提供了强大的国际化(i18n)功能,使开发者能够轻松地为应用添加多种语言支持。以下将详细介绍如何在 Qt Widgets 和 Qml 中实现多语言动态翻译。 ...

    C# 多国语言支持

    在C#编程中,支持多国语言是一项重要的功能,它使得软件能够适应全球不同地区用户的语言需求。在本文中,我们将深入探讨C#如何实现多国语言支持,并结合提供的资源文件来理解其工作原理。 首先,C#通过.NET ...

    winform多国语言切换 翻译.rar

    C# winform多语言实现,通过xml文件配置实现,可在线切换多国语言 C# winform多语言实现,通过xml文件配置实现,可在线切换多国语言 C# winform多语言实现,通过xml文件配置实现,可在线切换多国语言 C# winform...

    java开发多国语言互译

    在Java开发中,实现多国语言互译通常涉及到与外部翻译API的交互,例如百度翻译。这个Demo项目,"TransDemo",展示了如何利用百度翻译API来构建一个基本的翻译应用。下面将详细介绍这个过程涉及的技术点和步骤。 ...

    自做多国语言

    本项目名为“自做多国语言”,它提供了一种利用ini文件实现多国语言切换的方法,这种方法既简单又有效,避免了常见的界面抖动和闪烁问题。 首先,我们要理解什么是ini文件。INI文件是一种纯文本配置文件,常用于...

    翻译专家(多国语言互译软件)

    《翻译专家:多国语言互译软件深度解析》 在全球化的今天,语言沟通的重要性不言而喻。无论是商务交流、学术研究还是日常生活中,我们常常需要跨越语言障碍,这时候一款强大的翻译工具就显得尤为重要。"翻译专家...

    谷歌多国语言翻译源码。

    谷歌多国语言翻译源码是基于谷歌翻译API(Google Translate API)实现的一种技术,它允许开发者集成到自己的应用或网站中,实现多种语言之间的实时翻译功能。谷歌翻译API是谷歌提供的一个强大的云服务,它利用了谷歌...

    Eclipse多国语言包

    值得注意的是,虽然Eclipse多国语言包可以显著提高用户体验,但并不是所有功能都会被翻译。某些插件或自定义组件可能仍然保留英文,这是由于它们独立于Eclipse核心,并不包含在语言包内。此外,新版本的Eclipse发布...

    vc 多国语言 方法集锦

    总的来说,"vc 多国语言 方法集锦"可能涵盖了如何创建、管理和切换多语言资源,以及如何利用VC++和MFC的特性来实现国际化和本地化的全面指南。通过理解并应用这些知识点,开发者可以创建出能够跨越语言障碍,适应...

    Delphi实现多国语言

    在Delphi中实现多国语言支持是一项常见的任务,它允许应用程序根据用户的选择显示不同语言的界面和文本。这里,我们主要关注如何通过编程实现这一功能,以及涉及的关键步骤和文件。 1. **语言文件**: 如`EngLish....

    C#多国语言包

    在.NET框架2.0版本中,C#支持创建多国语言包,这使得开发者能够构建具有全球化和本地化功能的应用程序。多国语言包是一种特殊类型的资源文件,它包含了不同语言版本的文本、图片和其他用户界面元素,允许软件根据...

    多国语言翻译机.doc

    多国语言翻译机.doc

Global site tag (gtag.js) - Google Analytics