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

因为是刚刚接触java 的网络编程,如果有不当之错,还请各位看官指证。

本类可以直接在命令行下使用:

javaekinglong.languageEngine.GoogleTranslationEngine2[text][langpair]

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

示例如下:
示例1:将英语“hello”翻译成“日语”

javaekinglong.languageEngine.GoogleTranslationEngine2helloen - ja

结果1:

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

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

javaekinglong.languageEngine.GoogleTranslationEngine2hello,theworld ! en - cn

结果2:

翻译内容:hello,theworld !
Google翻译结果:你好,世界 !

示例3:将汉语“你好 世界”翻译成英语

javaekinglong.languageEngine.GoogleTranslationEngine2 你好世界cn - en

结果3:

翻译内容:你好世界
Google翻译结果:Helloworld

下面是实现代码:

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

package ekinglong.languageEngine;

import java.io. * ;
import java.net. * ;

public class GoogleTranslationEngine2 {

// 定义互译语言对常数变量,符合google页面相关对译语言对的值
public static final

StringLANGPAIR_CN_EN = " zh-CN|en " ; // 汉语到英语
public static final StringLANGPAIR_EN_CN = " en|zh-CN " ; // 英语到汉语
public static final StringLANGPAIR_EN_JA = " en|ja " ; // 英语到日语

// 定义编码常数
public static final StringCHARSET_CN = " GBK " ;
public static final StringCHARSET_JA = " Shift_JIS " ;

// google在线翻译引擎url
static final StringengineUrl = " http://translate.google.com/translate_t " ;

/***/ /**
*利用google在线翻译引擎实现翻译,并获取翻译内容
* @param translateText要翻译的文本内容
* @param langpair对译语言的值对,如en|ja是由英语翻译到日语
*/
public Stringtranslate(StringtranslateText,Stringlangpair)
throws MalformedURLException,IOException,UnsupportedEncodingException {

// text是google翻译页面提交时对于欲翻译文字的变量名
// langpair是google翻译页面提交时对于采用何种互对语言的变量名
Stringurlstr = engineUrl + " ?text= " + encodeText(translateText) + " &langpair= " + langpair;
URLurl = new URL(urlstr);
URLConnectionconnection = (HttpURLConnection)url.openConnection();
connection.setRequestProperty

( " User-agent " , " IE/6.0 " ); // 必须,否则报错,到于FF的怎么写,没做过测试
connection.connect();

Stringcharset = getCharsetFromLangpair(langpair); // 自动获取目标语言的编码
BufferedReaderin = new BufferedReader( new
InputStreamReader(connection.getInputStream(),charset)); // 使用指定编码接收数据

Stringline = null ;
StringBuildersb = new StringBuilder();
while ((line = in.readLine()) != null ) {
sb.append(line);
}
in.close();

Stringtranslation = getContent(sb.toString());
return translation;
}

/***/ /**
*从获得的源文件中剥取翻译内容
*分析google翻译生成的html源码来看
*翻译内容被置于<divid=result_boxdir=ltr>和</div>标签之间
* @param htmltext获得的网业源代码
*/
private StringgetContent(Stringhtmltext) {
Stringss = " <divid=result_boxdir=ltr> " ;
Stringse = " </div> " ;
int ssidx = htmltext.indexOf(ss);
&nbs

p; int seidx = htmltext.indexOf(se,ssidx);

Stringrestr = htmltext.substring(ssidx + ss.length(),seidx);
return restr;
}

// 将文本进行URL编码
private StringencodeText(Stringtext) {
Stringstr = java.net.URLEncoder.encode(text);
return str;
}

/***/ /**
*根据翻译的目标语言获取对应的接收编码
*
*@langpair对译语言的值对,如en|ja是由英语翻译到日语
*/
private StringgetCharsetFromLangpair(Stringlangpair) {
// 当翻译的目标语言为日语时,采用Shift+JIS编码接收数据
if (langpair.equals(LANGPAIR_EN_JA))
return CHARSET_JA;
else return CHARSET_CN;
}

public static void main(String[]args) throws Exception {
GoogleTranslationEngine2engine = new GoogleTranslationEngine2();
Stringtext = " hello " ;

Stringlangpair = " en|ja " ;
if (args.length >= 2 ) {
StringBuildersb = new StringBuilder();
for ( int i = 0 ;i < args.length - 1 ;i ++ ) {
sb.append(args[i]).append( " " );
}
text = sb.toString();
Stringtmp = 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( " 语言对指定错误 " );
}
Stringrst = engine.translate(text,langpair);
System.out.println( " 翻译内容: " + text);
System.out.println( " Google翻译结果: " + rst);
}
}

利用Google在线翻译引擎制作自己的多国语言翻译机相关推荐

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

    出处:http://www.blogjava.net/ekinglong/archive/2006/11/12/80704.html?Pending=true#Post 本文介绍如何利用Google在 ...

  2. 调用worldlingo.com翻译服务,制作的一个多国语言翻译工具

    worldlingo的自动翻译服务功能免费而且相当强大,支持12种语言的相互翻译. 只是每次要开个IE浏览器使用,前几天刚好在做WEBRequest相关的程序,有个现成的Http请求库,就用它做了一个 ...

  3. 多国语言翻译-多国翻译语言软件免费

    多国语言翻译,今天给大家分享一款免费多国语言翻译,我们为什么要选择这款好用的翻译软件,因为汇集了世界最好的几个翻译平台(百度/谷歌/有道),第一点翻译质量高,选择性多.第二点支持各种语言互译,第三点可 ...

  4. 借助Bing Translate API翻译API实现网站多国语言翻译功能

    前几天发了篇<借助Google Translate API实现网站多国语言翻译功能>,但好心人告诉我,谷歌即将关闭一些API,其中就包括谷歌翻译的API,以下是原文: 最近Google宣布 ...

  5. Office内嵌12国语言翻译功能----翻译好助手(转)

    Office内嵌12国语言翻译功能----翻译好助手(转)[@more@] 这是Office XP/2003之后才有的超好用功能,但可能很多人都不知道,所以,每次遇到不会念或看不懂的英文.日文,往往束 ...

  6. android多国语言翻译包命名,android多国语言翻译工具,一键生成28国家翻译6666翻车了...

    最近把软件发到google play苦于多国语言,手动翻译数量太多太蛋疼,因而用百度翻译api进行多国语言翻译.java 很少说直接上代码:json ""; api 匹配的是app ...

  7. android多国语言翻译工具,一键生成28国家翻译6666翻车了

    最近把软件发到google play苦于多国语言,手动翻译数量太多太蛋疼,于是用百度翻译api进行多国语言翻译. 不多说直接上代码: "<string\\s*name=\\\" ...

  8. QT在QML下实现多国语言翻译

    在某些情况下,我们使用QT开发的界面需要完成多国语言的翻译工作.QT在这方面其实已经给出了支持,本文主要讲述在使用QML编写界面的情况下如何实现多国语言的翻译. 若要实现QT多国语言翻译,必须要搞清楚 ...

  9. Android多国语言翻译 字符串目录详解

    Android多国语言翻译 国际化 命名规则 values-[ 语言简称]-r[地区] 常用语言 values #默认语言 找不到对应语言就会使用这里 values-ar # 拉伯语 Arabic v ...

最新文章

  1. 摘自ubantuer-Linux防火墙iptables学习笔记(三)iptables命令详解和举例
  2. 华为手机可以下载鸿蒙系统吗_华为鸿蒙手机系统首次曝光,汉字界面简洁明了...
  3. Vue多字段下的非空判断(new Promise)
  4. Unity Shader 2D水流效果
  5. cmd如何默认以管理身份运行
  6. 洛谷 深基 第1部分 语言入门 第4章 循环结构程序设计(2022.02.14)
  7. android动画能超过父容器吗,Android中你不得不知道的动画知识 (一)
  8. python 自动化 在日历中选择时间-Python中Selenium选择日期(选择日历控件)的方法...
  9. Linux系统目录结构解析(centos)
  10. Android权限之sharedUserId和签名
  11. wordpress如何隐藏后台位置?
  12. linux内核各版本的下载路径
  13. mac-数据库建模工具Workbench、PDMan
  14. win查看产品密钥的方法
  15. stack smashing detected(c++报错)
  16. GIS地图学习笔记二之Android开发
  17. linux日常常用命令介绍——实用、简单明了不啰嗦
  18. 【重识云原生】第六章容器6.3.5节——Controller Manager概述
  19. shineblink LD3320A语音识别
  20. 基于ArcGIS Pro 的AI地图配色工具

热门文章

  1. 终于,我也到了和Eclipse说再见的时候,难说再见
  2. 又涨了?程序员9月平均薪资,高薪还能持续多久?
  3. 【IoT】硬件PM系列(四):硬件产品开发指南「构思、设计、工程、验证」
  4. 单体架构、SOA和微服务
  5. 台达PLC ES系列与英威腾GD变频器通讯程序原创可直接用于生产的程序
  6. html动态泡泡,动态气泡菜单.html
  7. 工厂生产数据实时分析,产品质量高效管控
  8. 三八节与芊芊一起赏雪
  9. 信息化项目“监理”究竟“监理” (一)(转)
  10. 购买正版 Microsoft 软件