出处: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 实现多国语言翻译
多国语言翻译软件是一款可以实现多国语言间相互翻译的软件。 多国语言翻译软件功能特点: 1.可以进行多个国家语言的翻译 进行学习 有:中--->英,中--->日,中--->法,中--->俄,中--->泰,中---...
C# 多国语言翻译,百度翻译,基于百度翻译多国语言翻译工具源码,实例,批量翻译 ,自动翻译,下载后更换你自已ID 和KEY即可
软件名称: 多国语言在线翻译机V1.0 支持系统: 所有系统 软件作者: 许愿の猪 版权所属: 默默游戏社区 支持网站: http://www.mmosq.com 软件简介: 支持多国语言在线翻译,但必须联网 原帖地址: 【原创...
使用C#轻松实现多国语言之间的在线翻译.doc
软件翻译支持多国语言
C# winform多语言实现,通过xml文件配置实现,可在线切换多国语言 C# winform多语言实现,通过xml文件配置实现,可在线切换多国语言 C# winform多语言实现,通过xml文件配置实现,可在线切换多国语言 C# winform...
多国语言翻译机.doc
谷歌多国语言翻译源码
IE在线多国语言翻译插件Worldlingo20Web
这是一款可以翻译各国语言的软件!操作简便,而且准确,我用了很久,英语还有真人发音!
在WPF应用程序中搭建多语言支持(Multilingual Support)是我最近在做的一件事,对于不使用英语的人士而言,此举提高了程序的可用性。实现起来要完成以下目标: 一个版本容纳多种语言. 这就意味着不要创建单独的英语...
Qt实现多国语言翻译.tar.gz --------------- Linux下,基于Qt5.7 若Windows下报错,可将中文注释删除即可。 此为QtCreate之Bug qzher.com 二〇一六年八月十五日
使用idhttp提交到国外顶级翻译网站实行翻译功能,翻译准确率比金山快译2005的全文翻译要准确多了。 简繁互译发现有问题,服务器不能准确的进行简繁互译,其他语言换繁体都没有问题,不是程序本身问题。
基于Android平台的多国语言翻译器设计与实现毕业论文.docx
调用百度翻译的接口,实现简单的多语言互译的简单Demo
网站多国语言插件,jQuery点击下拉跳转相应语言,通过下边的截图您可以看一下效果,当然这里并不提供语言翻译,您可以使用谷歌翻译或自己制作相应语言的网页。
20国语言在线客服/AI智能客服/消息预知已读未读/多商户机器人/im即时通讯聊天 1.新增客服坐席消息互动,客服之间可以互相接收消息 2.新增消息预知功能,可提前预知访客已输入未发送的消息显示 3.重构wk通信接口,...
很多网站设计中英文转换的,但是如果是多国的怎么办呢???asp.net中就有这么神奇的东东,详细请看....
多国语言翻译Delphi网络版