`

利用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翻译出来没有文本的格式,哪位大虾知道解决方法可以留言给我好吗?小弟感激不尽。
   
分享到:
评论

相关推荐

    google-api-translate-java(Java 语言对Google翻译引擎的封装类库)

    - `google-api-translate-java`支持所有Google翻译API支持的语言,通过ISO 639-1语言代码来指定源语言和目标语言。例如,"en"代表英语,"zh-CN"代表简体中文。 6. **其他功能** - 除了基本的文本翻译,类库可能还...

    谷歌翻译API,jar包

    执行翻译的类则包含了向谷歌翻译API发送请求并接收响应的逻辑,开发者只需要传入待翻译的文本和目标语言代码,即可获取翻译结果。 使用这个jar包的前提是确保网络连接正常,因为所有的翻译请求都需要通过网络发送到...

    基于Java调用谷歌翻译网络接口实现文章翻译功能.zip

    不过,考虑到便捷性和易用性,许多开发者会选择使用Google官方提供的Gson库来处理JSON数据,因为谷歌翻译API返回的结果通常是JSON格式。 项目中的"google_translation_api-master"文件夹可能包含以下组件: 1. `src...

    谷歌翻译版机器翻译版javaAPI

    5. **API文档与资源**:提供的链接指向了一个名为matools的网站,该网站提供了与Android相关的API文档。尽管这里提到的是Android,但我们可以推测该网站也可能包含了关于谷歌翻译版Java API的相关资源和文档,这些...

    Android开发教程之 Google translate api例子--千锋培训

    Google Translate API 是一个强大的在线翻译服务,允许开发者将文本从一种语言翻译成另一种语言。它支持多种编程语言和平台,包括Android。通过简单的API调用,开发者可以轻松地在自己的应用中集成翻译功能。 #### ...

    PyQT5写的谷歌翻译google-translate可在线实时翻译界面不错

    2. PyQT5谷歌翻译:这表明应用是用PyQT5框架构建的,用于实现用户界面和与谷歌翻译API的交互。 3. google-translate:这可能是应用的名称,也可能指的是源代码文件夹或项目名称。 压缩包子文件的文件名称列表包含...

    谷歌翻译API(中译英)

    谷歌翻译API是谷歌提供的一项强大的在线翻译服务,它允许开发者在他们的应用或系统中集成自动翻译功能。然而,商业使用谷歌翻译API通常需要付费,这可能会对一些个人开发者或者小型项目造成经济负担。针对这种情况,...

    google.translate.php google 翻译类 2011.11

    由于不需要API密钥,这可能意味着它利用的是Google翻译的公共接口,可能会有一定的使用限制,例如请求频率或翻译字符数。 标签中的"google翻译"是指Google提供的在线翻译服务,它支持多种语言之间的互译,具有较高...

    利用谷歌 Translate API制作自己的翻译脚本

    需要注意的是,虽然本文提供了一个使用谷歌Translate API的具体实现示例,但在实际使用中,谷歌可能已经变更了API的细节或限制了免费使用,因此在应用本文的示例时需要对照当前的API文档进行必要的调整。同时,使用...

    最新谷歌翻译工具.zip

    而`gettk.js`可能是用于获取翻译令牌的JavaScript脚本,这是调用谷歌翻译API的关键步骤,因为每次翻译请求都需要一个有效的令牌来验证身份。 总的来说,这款最新的谷歌翻译工具利用C#编程语言和谷歌的翻译服务,以...

    微软翻译api及示例代码

    3. **请求构建**:根据API文档,构造翻译请求的参数,如源语言、目标语言和待翻译的文本。 4. **请求执行**:发送POST请求到API服务器,通常包括API密钥和请求参数。 5. **响应处理**:接收并解析API返回的JSON或...

    Google 在线翻译的 Java 源码和文档

    总的来说,这个压缩包中的Java源码和文档为学习和使用Google Translate API提供了一个实用的起点。通过研究这些材料,开发者不仅可以掌握如何在Java项目中整合翻译功能,还能了解到API调用、认证、异常处理等通用的...

    Python-自动翻译论文pdf生成带翻译段落的文本文档txt

    自动翻译论文pdf生成带翻译段落的文本文档txt”提供了一种有效的方法,它利用了Python库pdfminer进行PDF解析,并通过某种翻译API(如Google Translate或DeepL)将内容翻译成所需的语言,最终生成带有原文和翻译的TXT...

    translate_越南语api_GooglepayVietnam_翻译_

    总结来说,"translate_越南语api_GooglepayVietnam_翻译_"这一主题涉及到利用谷歌翻译API进行越南语文本处理的技术,以及在实际应用中的多种可能性。通过理解和使用这样的API,开发者能够轻松地在他们的产品和服务中...

    前端开源库-google-translate-token

    这里的'YOUR_API_KEY'需要替换为你在Google Cloud Console中获取的API密钥,源语言和目标语言则指定翻译的源文本语言和期望的目标语言代码,如'en'代表英语,'zh-CN'代表简体中文。 值得注意的是,尽管"google-...

    C# 谷歌、百度、有道、小牛翻译接口调用

    - 谷歌翻译API是Google Cloud的一部分,提供高质量的多语言翻译。调用时,需要使用OAuth 2.0进行身份验证,并通过POST请求发送JSON数据,包含待翻译的文本和源语言、目标语言代码。 4. **百度翻译API**: - 百度...

    谷歌翻译代码

    谷歌翻译API提供了一套丰富的接口,支持多种语言的文本翻译、语音翻译、文档翻译等功能。开发者可以通过发送HTTP请求至API端点,传递待翻译的文本或文档,以及目标语言等参数,即可获取翻译结果。这种方式适用于构建...

    谷歌翻译接口调用、数据库字段翻译助手

    通过调用谷歌翻译API,开发者可以实现文本、甚至整个文档的自动翻译。接口通常支持多种编程语言,如Python、Java、C#等,允许开发者根据需要选择合适的语言进行调用。 接口调用的过程一般包括以下步骤: 1. 注册并...

    复制翻译软件神器,谷歌翻译

    标题中的“复制翻译软件神器,谷歌翻译”指的是一个利用谷歌翻译API实现的高效便捷的翻译工具,它允许用户快速地翻译选定的文本,尤其适用于阅读和理解英文论文或文章。这款软件通过复制和粘贴机制,能够无缝对接...

    C#版谷歌翻译-调用谷歌web翻译

    4. **请求参数**:调用谷歌翻译API时,需要提供源语言、目标语言和待翻译的文本。此外,可能还需要包括TKK值,虽然在这个项目中我们跳过了JavaScript计算TKK的步骤。你需要根据谷歌API文档准备这些参数。 5. **构建...

Global site tag (gtag.js) - Google Analytics