很是无奈,google翻译收费了,像我们一般人就用不起了.只能另想办法了.上一篇介绍了使用bing也是解决的办法之一,但是不可否认还是google翻译的更加理想.
首先下载项目所需要的jar包:jsoup-*.jar,commons-io-*.jar,commons-logging-*.jar.为了提高可扩展性我使用了接口,看代码:
package gd.hz.lily.util.translate; /** * 提供系统的语言翻译功能 * @author lfd * 2013-10-01 */ public interface TranslateUtil { /** * http请求的类型(如"text/html" , "text/plain") * @param type 请求的类型 */ public void setContentType(String type) ; /** * 翻译语言(自动识别源语言) * @param text 翻译的内容 * @param srcLang 源语言 * @param targetLang 目标语言 * @return 目标语言内容 */ public String translate(final String text, final String targetLang) throws Exception ; /** * 翻译语言(自动识别源语言) * @param texts 翻译的内容数组 * @param targetLang 目标语言 * @return 目标语言内容 */ public String[] translate(final String[] texts, final String targetLang) throws Exception ; /** * 翻译语言 * @param text 翻译的内容 * @param srcLang 源语言 * @param targetLang 目标语言 * @return 目标语言内容 */ public String translate(final String text, final String srcLang, final String targetLang) throws Exception ; /** * 翻译语言 * @param texts 翻译的内容数组 * @param srcLang 源语言 * @param targetLang 目标语言 * @return 目标语言内容 */ public String[] translate(final String[] texts, final String srcLang, final String targetLang) throws Exception ; }
在这里我提供了一个枚举类,列出google所支持的翻译语言.
package gd.hz.lily.util.translate; /** * 谷歌翻译API定义的语言信息。 * @author lfd 改 * 2013-10-01 */ public enum GoogleLanguage { AUTO_DETECT(""), AFRIKAANS("af"), ALBANIAN("sq"), AMHARIC("am"), ARABIC("ar"), ARMENIAN("hy"), AZERBAIJANI("az"), BASQUE("eu"), BELARUSIAN("be"), BENGALI("bn"), BIHARI("bh"), BULGARIAN("bg"), BURMESE("my"), CATALAN("ca"), CHEROKEE("chr"), CHINESE("zh"), CHINESE_SIMPLIFIED("zh-CN"), CHINESE_TRADITIONAL("zh-TW"), CROATIAN("hr"), CZECH("cs"), DANISH("da"), DHIVEHI("dv"), DUTCH("nl"), ENGLISH("en"), ESPERANTO("eo"), ESTONIAN("et"), FILIPINO("tl"), FINNISH("fi"), FRENCH("fr"), GALICIAN("gl"), GEORGIAN("ka"), GERMAN("de"), GREEK("el"), GUARANI("gn"), GUJARATI("gu"), HEBREW("iw"), HINDI("hi"), HUNGARIAN("hu"), ICELANDIC("is"), INDONESIAN("id"), INUKTITUT("iu"), IRISH("ga"), ITALIAN("it"), JAPANESE("ja"), KANNADA("kn"), KAZAKH("kk"), KHMER("km"), KOREAN("ko"), KURDISH("ku"), KYRGYZ("ky"), LAOTHIAN("lo"), LATVIAN("lv"), LITHUANIAN("lt"), MACEDONIAN("mk"), MALAY("ms"), MALAYALAM("ml"), MALTESE("mt"), MARATHI("mr"), MONGOLIAN("mn"), NEPALI("ne"), NORWEGIAN("no"), ORIYA("or"), PASHTO("ps"), PERSIAN("fa"), POLISH("pl"), PORTUGUESE("pt"), PUNJABI("pa"), ROMANIAN("ro"), RUSSIAN("ru"), SANSKRIT("sa"), SERBIAN("sr"), SINDHI("sd"), SINHALESE("si"), SLOVAK("sk"), SLOVENIAN("sl"), SPANISH("es"), SWAHILI("sw"), SWEDISH("sv"), TAJIK("tg"), TAMIL("ta"), TAGALOG("tl"), TELUGU("te"), THAI("th"), TIBETAN("bo"), TURKISH("tr"), UKRANIAN("uk"), URDU("ur"), UZBEK("uz"), UIGHUR("ug"), VIETNAMESE("vi"), WELSH("cy"), YIDDISH("yi"); /** * 谷歌的当前语言的字符串表示形式。 */ private final String language; /** * 构造函数 * @param 语言标识符。 */ private GoogleLanguage(final String pLanguage) { language = pLanguage; } public static GoogleLanguage fromString(final String pLanguage) { for (GoogleLanguage lang : values()) { if (pLanguage.equals(lang.toString())) { return lang ; } } return null; } /** * 返回的字符串表示这种语言。 * @return 这种语言的字符串表示形式。 */ @Override public String toString() { return language; } }
接下来看一下TranslateUtil的实现类TranslateToGoogle
package gd.hz.lily.util.translate; import org.jsoup.Jsoup; import org.jsoup.nodes.Document; import org.jsoup.nodes.Element; /** * 使用google进行翻译 * @author lfd * 2013-10-01 */ public class TranslateToGoogle implements TranslateUtil { private final String ID_RESULTBOX = "result_box"; private String type = "" ; public void setContentType(String type) { this.type = type ; } public String translate(String text, String targetLang) throws Exception { return translate(text, "", targetLang) ; } public String[] translate(String[] texts, String targetLang) throws Exception { return translate(texts, "", targetLang) ; } public String translate(String text, String srcLang, String targetLang) throws Exception { return execute(text, srcLang, targetLang) ; } public String[] translate(String[] texts, String srcLang, String targetLang) throws Exception { StringBuilder content = new StringBuilder() ; int size = texts.length ; for(int i = 0 ; i < size ; i++) { if(i < size-1) { content.append(texts[i]).append("{*}") ; } else { content.append(texts[i]) ; } } String[] temps = execute(content.toString(),srcLang , targetLang).split("\\{\\*\\}") ; size = temps.length ; //去除左右空白字符 for (int i = 0; i < size; i++) { temps[i] = temps[i].trim() ; } return temps ; } /** * 发送翻译请求 * @param text 要翻译的内容 * @param srcLang 源语言 * @param targetLang 目标语言 * @return 目标语言 * @throws Exception 翻译失败 */ private String execute(final String text, final String srcLang, final String targetLang) throws Exception { inspection(srcLang, targetLang) ; Document document = Jsoup.connect("http://translate.google.com.hk") .data("sl", srcLang) .data("ie", "UTF-8") .data("oe", "UTF-8") .data("text", text) .data("tl", targetLang) .data("ie", "UTF-8") .userAgent("Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/535.7 (KHTML, like Gecko) Chrome/16.0.912.77 Safari/535.7") .cookie("Cookie", "Cookie PREF=ID=8daa1f767f10d1fe:U=f5ac701cf7d3f2e0:FF=0:LD=en:CR=2:TM=1277174286:LM=1289370601:S=q7yslRWEZs3uK1H8; NID=39=UO-TWo9HzzjHc-d_wYm7BVR1cH33KpqaN5h5877_i29nERA93FeG1GSuV3ZSvsOx8D-TnHKpB9m0KhZRH8U9uPwoE-arYd0bAyAlILyXZxLO2_TyGQhJpcMiOLVEuCpq; SID=DQAAAHoAAADMlGzeKhnGkbkIJ36tVO0ZPXgmQ6Cth7Oa6geyyE1WJooW8P01uKUHNrsRkjggvFMAWIWB9J5i18z0F6GjC_oV79mSwXEDGuRFGhRnDyJdid3ptjFW0pIyt4_2D6AMIqtOWF71aWdvY7IvAU1AWMNs8fBZHAOgRqtf3aCUkr36ZA; HSID=A6-YJTnhjBdFWukoR") .timeout(2000000) .post(); Element element = document.getElementById(ID_RESULTBOX); return element.text() ; } /** * 检查Google是否支持语言. */ private void inspection(String srcLang, String targetLang) { if(!"".equals(this.type)) setContentType(type) ; if(GoogleLanguage.fromString(srcLang) == null || GoogleLanguage.fromString(targetLang) == null) { System.out.println("Google不支持的语言") ; } } }
测试:
public static void main(String[] args) { TranslateUtil translate = new TranslateToGoogle() ; try { System.out.println(translate.translate("世界你好!", "en")) ; } catch (Exception e) { e.printStackTrace(); } }
这里需要注意,如果使用get请求是有字数限制的.
相关推荐
C#调用谷歌英文翻译,通过HTTP get方式访问谷歌翻译网址,抓取翻译结果
PowerShell调用Google翻译网站的服务,实现英译中翻译,控制台程序,输入英文内容,输出中文信息并复制到剪贴板中。
C#调用谷歌翻译接口,C#版根据tkk计算tk算法,不调用js算法.直接调用谷歌web翻译,http post调用
java 调用 google 翻译工具类,纯手打,可直接运行,有问题请留言
调用谷歌翻译网络接口实现文章翻译功能.zip 大学生课程设计 的课程设计 自己大二写的课程设计
易语言源码易语言调用Google翻译源码.rar 易语言源码易语言调用Google翻译源码.rar 易语言源码易语言调用Google翻译源码.rar 易语言源码易语言调用Google翻译源码.rar 易语言源码易语言调用Google翻译源码.rar ...
google翻译API Get/Post 调用无翻译内容长度限制 google翻译API Get/Post 调用无翻译内容长度限制 google翻译API Get/Post 调用无翻译内容长度限制
调用谷歌接口的,翻译小工具。
C#可以调用的谷歌翻译类库,只实现了简体繁体和英文之间的互相翻译
易语言调用Google翻译源码,调用Google翻译,CreateThreadA,翻译,访问网络,取端口,取页面地址,取域名,CloseHandle,网络_Internet激活,网络_Internet建立连接,网络_Http创建请求,网络_Http发送请求,网络_Internet读文件...
Android调用google翻译的javascript实现翻译单词功能,在线翻译,用户输入单词,就可。 WebSettings webSettings = wv.getSettings();//取得WebSettings webSettings.setJavaScriptEnabled(true);//设定可执行...
C#谷歌翻译, 是一个WebBrowser控件调用谷歌翻译网站 http://translate.google.cn 去掉一些无关紧要的元素
利用JS实现网页的在线自动google翻译
JAVA调用谷歌翻译接口,JAVA版根据tkk计算tk算法,不调用js算法.直接调用谷歌web翻译,http post调用
JAVA自动调用谷歌翻译接口实现txt文档翻译.zip
PHP调用Google翻译的程序类,这是当年我写来循环调用 google 把几万篇文章调用 google进行翻译的处理程序,不过你在使用前先看看服务器环境是否被墙?一般服务器上是可以调用的。
[工具]GoogleTranslate 翻译工具
关于jQuery调用Google Translator的,译自Google Language Translator Using jQuery。
易语言调用Google翻译源码.zip易语言项目例子源码下载易语言调用Google翻译源码.zip易语言项目例子源码下载 1.合个人学习技术做项目参考 2.适合学生做毕业设计参考 3.适合小团队开发项目参考
读取谷歌在线翻译数据,其中包含了一个仿制的gtalk界面相当不错