`

利用GoogleTranslate API翻译文档和文本

    博客分类:
  • java
阅读更多
   首先下载从http://code.google.com/p/google-api-translate-java/下载最新的,目前最新的是google-api-translate-java-0.94.jar.
   利用谷歌翻译提供的API可以实现文件和文本翻译
/** 
 * 2010-10-10 
 * GoogleTranslateDemo.java 
 * author:ZengZhaoShuai
 */
package wsg.google.translate;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.util.List;
import wsg.file.util.ReadFiles;
import com.google.api.Files;
import com.google.api.translate.Language;
import com.google.api.translate.Translate;
/**
 * @author zengzhaoshuai
 * 
 */
public class GoogleTranslateDemo {
	// 静态初始化块
	static {
		Translate
				.setHttpReferrer("http://code.google.com/p/google-api-translate-java/");
	}
	/**
	 * 
	 * @param text
	 * @param from
	 * @param to
	 * @return
	 */
	public static String gettranslatedText(String text, Language from,
			Language to) {
		/**
		 * 第一个参数:要翻译的内容 第二个参数:翻译内容原始的语言 第三个参数:翻译内容要得到结果的语言
		 */
		String translatedText = "";
		try {
			translatedText = Translate.execute(text, from, to);
		} catch (Exception e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		return translatedText;

	}
	/**
	 * 
	 * @param files
	 * @param from
	 * @param to
	 * @param size
	 *            设置限制文件的大小
	 */
	public static void TranslateFiles(List<File> files, Language from,
			Language to, int size) { // 翻译某个目录下的所有文件
		for (File file1 : files) {
			File parent = new File(file1.getParent());
			File file2 = new File(parent.getParent() + "\\" + parent.getName()
					+ "_EN\\" + file1.getName());
			if (!new File(parent.getParent() + "\\" + parent.getName()
					+ "_EN\\").exists()) {
				// 创建一个文件夹,文件夹名为先前文件加上_EN
				new File(parent.getParent() + "\\" + parent.getName() + "_EN\\")
						.mkdir();
			}
			try {
				// 由于google会根据访问使用谷歌翻译的情况限制翻译文件的大小,一般翻译6KB大小的文件没什么问题
				if (file1.length() <= 1024 * size) { // 文件大小小于或等于6KB(4*1024B)时
					String translateText = gettranslatedText(Files.read(file1),
							from, to);
					Files.write(file2, translateText);// 写入文件
				} else { // //文件大小大于设定的文件大小限制时,一般设置为6KB时
					// 采取把文件分为多个块,每个块分别翻译,块的大小与文件限制大小相同
					int len = 1024 * size, count = 1;
					long length = file1.length();
					if (length % len == 0) {
						count = ((int) length) / len;
					} else {
						count = ((int) length) / len + 1;
					}
					byte buf[] = new byte[(int) length];
					InputStream inputStream = null;
					OutputStream outputStream = null;
					inputStream = new FileInputStream(file1);
					outputStream = new FileOutputStream(file2);
					for (int i = 0; i < count; i++) {
						if ((i + 1) * len <= length) {
							inputStream.read(buf, i * len, len);
							outputStream.write(gettranslatedText(
									new String(buf, i * len, len), from, to)
									.trim().getBytes());
						} else {
							inputStream.read(buf, i * len, (int) length - i
									* len);
							outputStream
									.write(gettranslatedText(
											new String(buf, i * len,
													(int) length - i * len),
											from, to).trim().getBytes());
						}
					}
				}

			} catch (IOException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
		}

	}
	public static void main(String[] args) {
		// 翻译文本
		String text = "我爱你";
		System.out.println(GoogleTranslateDemo.gettranslatedText(text,
				Language.CHINESE, Language.ENGLISH));
		// 翻译所在目录下的文件,目前测试的好像只有txt文件的比较有效
		ReadFiles readFiles = new ReadFiles("E:\\test");// 文档所在目录
		// 实现中文翻译英文,设置文件限制大小为6KB
		GoogleTranslateDemo.TranslateFiles(readFiles.getFiles(),
				Language.CHINESE, Language.ENGLISH, 6);

	}

}


//遍历文件
package wsg.file.util;

import java.io.File;
import java.util.ArrayList;
import java.util.List;
public class ReadFiles {
	private List<File> files = new ArrayList<File>();
    private File dir;
    public ReadFiles(String directoryPath){
    	dir=new File(directoryPath);
    }
	public void listFiles(File dir) {
		File file[] = dir.listFiles();
		for (int i = 0; i < file.length; i++) {
			if (file[i].isDirectory()) {
				this.listFiles(file[i]);                //迭代遍历
			} else {
				//迭代选择txt文件
				if (file[i].getName().lastIndexOf(".txt") != -1){
					files.add(file[i]);
				}
			}
		}
	}
	public List<File> getFiles(){
		this.listFiles(dir);
		return files;
	}
}


  暂时还没找到比较好的方法来直接翻译pdf和doc文档,还有txt翻译出来没有文本的格式,哪位大虾知道解决方法可以留言给我好吗?小弟感激不尽。
   
分享到:
评论

相关推荐

    英语自动翻译(vb.net源代码)-第三版(bing翻译+google翻译)

    原理:利用Bing+Google翻译引擎. 使用方法,启动自动翻译后.右键复制需要翻译的英语文本(例如msdn英文文档),则将内容自动翻译出来. 1,速度更快,占用内存极小,采用多线程技术 2,采用谷歌+bing翻译api 程序需要翻译key...

    翻译剪贴板

    翻译API有谷歌、必应和有道,能够自动选择可用的翻译API,由于谷歌翻译最专业 ,所以优先使用,最后是有道翻译,这个是考虑到被墙的情况。此压缩包包含了工具和源码,仅仅使用Win32 SDK实现,非MFC、非ATL。注意,此...

    translate-wechat-mini-program-master-百度翻译api实现微信翻译小程序.zip

    zh是中文,en是英文,很遗憾,这个url这可以播报中文和英文的语音,其他的小语种不可以这也是我的小程序只可以有中文和英文两种语言的语音的原因,第二个参数是text就是要播报的文本是什么效果图如下:...

    trans.nvim:Neovim的Google语言翻译插件

    您需要一点钱才能使用Google翻译API。 例如,2889个字符的价格为$ 0.06。 安装 对于vim-plug Plug ' utahta/trans.nvim ' , { ' do ' : ' make ' } 设定值 let g: trans_lang_locale = ' ja ' let g: trans_lang_...

    deep-translator:灵活的免费无限制python工具,可使用多个翻译器以简单的方式在不同语言之间进行翻译

    什么时候应该使用如果要使用python翻译文本如果要从文件翻译如果您想从许多来源获得翻译,而不仅仅是一个如果要自动翻译如果您想比较不同的翻译如果您想自动检测语言为什么要使用它这是唯一集成了许多翻译器的python...

    Python 实现的 Google 批量翻译功能

    首先声明,没有什么不良动机,因为经常会用 translate.google.cn,就想着用 Python 模拟网页提交实现文档的批量翻译。据说有 API,可是要收费。 生成 Token Google 为防爬虫而生成 token 的代码是 Javascript 的,...

    ZendFramework中文文档

    6.3. 读取(Fetching)选项和参数 6.3.1. 操作 Getopt 异常 6.3.2. 通过名字读取 (Fetching)选项 6.3.3. 报告选项 6.3.4. 读取非选项参数 6.4. 配置 Zend_Console_Getopt 6.4.1. 添加选项规则 6.4.2. 添加...

    谷歌师兄的leetcode刷题笔记-digital-quran-docs:古兰经学院数据分发项目的文档:数字古兰经-https://quran

    谷歌师兄的leetcode刷题笔记介绍 数字古兰经是一个国际平台,旨在制定与古兰经相关的数字资源通用标准,根据制定的标准格式化和分发古兰经相关数据。 该项目的任务是通过共享古兰经学院准备和发布的所有数据,使高贵...

    BlocklyIsaac:创建游戏没有Lua的Isaac绑定脚本

    为提高翻译效率,我将相同的语句提取出来,类型单独提取并翻译,因此如此还是有将近4000行的文本需要翻译。这种做法会导致少部分翻译出现问题,并生成脚本中专门设置了translate_no_dup_texts变量以防止某些词汇被...

    Aberrant-Marble

    Language Exchange是一个Angular Web应用程序,它使用icecomm.io(由WebRTC支持)进行视频聊天,并使用Google Translate API进行文本聊天。 访问语言交换: 最新版本 可以在此处找到最新版本的语言交换代码库: ...

    JAVA上百实例源码以及开源项目源代码

     Java波浪文字,一个利用Java处理字符的实例,可以设置运动方向参数,显示文本的字符数组,高速文本颜色,显示字体的 FontMetrics对象,得到Graphics实例,得到Image实例,填充颜色数组数据,初始化颜色数组。...

    java开源包1

    google-api-translate-java(Java 语言对Google翻译引擎的封装类库) 语音识别程序 SpeechLion.tar SpeechLion 是一个语音识别程序,主要用来处理桌面命令,基于 Sphinx-4 语音识别引擎开发。用户可以通过该软件来...

    java开源包11

    google-api-translate-java(Java 语言对Google翻译引擎的封装类库) 语音识别程序 SpeechLion.tar SpeechLion 是一个语音识别程序,主要用来处理桌面命令,基于 Sphinx-4 语音识别引擎开发。用户可以通过该软件来...

    java开源包2

    google-api-translate-java(Java 语言对Google翻译引擎的封装类库) 语音识别程序 SpeechLion.tar SpeechLion 是一个语音识别程序,主要用来处理桌面命令,基于 Sphinx-4 语音识别引擎开发。用户可以通过该软件来...

    java开源包3

    google-api-translate-java(Java 语言对Google翻译引擎的封装类库) 语音识别程序 SpeechLion.tar SpeechLion 是一个语音识别程序,主要用来处理桌面命令,基于 Sphinx-4 语音识别引擎开发。用户可以通过该软件来...

    java开源包6

    google-api-translate-java(Java 语言对Google翻译引擎的封装类库) 语音识别程序 SpeechLion.tar SpeechLion 是一个语音识别程序,主要用来处理桌面命令,基于 Sphinx-4 语音识别引擎开发。用户可以通过该软件来...

    java开源包5

    google-api-translate-java(Java 语言对Google翻译引擎的封装类库) 语音识别程序 SpeechLion.tar SpeechLion 是一个语音识别程序,主要用来处理桌面命令,基于 Sphinx-4 语音识别引擎开发。用户可以通过该软件来...

    java开源包10

    google-api-translate-java(Java 语言对Google翻译引擎的封装类库) 语音识别程序 SpeechLion.tar SpeechLion 是一个语音识别程序,主要用来处理桌面命令,基于 Sphinx-4 语音识别引擎开发。用户可以通过该软件来...

    java开源包4

    google-api-translate-java(Java 语言对Google翻译引擎的封装类库) 语音识别程序 SpeechLion.tar SpeechLion 是一个语音识别程序,主要用来处理桌面命令,基于 Sphinx-4 语音识别引擎开发。用户可以通过该软件来...

    java开源包8

    google-api-translate-java(Java 语言对Google翻译引擎的封装类库) 语音识别程序 SpeechLion.tar SpeechLion 是一个语音识别程序,主要用来处理桌面命令,基于 Sphinx-4 语音识别引擎开发。用户可以通过该软件来...

Global site tag (gtag.js) - Google Analytics