自己动手开发翻译软件(Java版)_JAVA_编程开发_程序员俱乐部

中国优秀的程序员网站程序员频道CXYCLUB技术地图
热搜:
更多>>
 
您所在的位置: 程序员俱乐部 > 编程开发 > JAVA > 自己动手开发翻译软件(Java版)

自己动手开发翻译软件(Java版)

 2010/12/11 11:31:52  lingyibin  http://lingyibin.javaeye.com  我要评论(0)
  • 摘要:其实这是实验课的一个课程设计,我把功能完善了一下,并强化了防错功能,于是就写成了下面这个程序。想要做一个翻译软件的话,本文只是一个入门参考,这里面只给出一个简单的功能,即把一个纯英文的文件翻译成相应的中文文件,并另外保存成一个新的文件。笔者不想花费时间去写华丽的界面,只是简单地弹出一些输入框,有兴趣的朋友可以自己去美化或完善一下该软件。packagecn.ling.TestTranslate;importjava.io.BufferedReader;importjava.io.File
  • 标签:翻译 Java 自己 开发 软件

其实这是实验课的一个课程设计,我把功能完善了一下,并强化了防错功能,于是就写成了下面这个程序。

想要做一个翻译软件的话,本文只是一个入门参考,这里面只给出一个简单的功能,即把一个纯英文的文件 翻译成相应的中文文件,并另外保存成一个新的文件。

笔者不想花费时间去写华丽的界面,只是简单地弹出一些输入框,有兴趣的朋友可以自己去美化或完善一下该软件。

?

package cn.ling.TestTranslate;

import java.io.BufferedReader;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.util.HashMap;
import java.util.Map;

/**
 * 
 * 模拟文本翻译软件
 * 注意:操作的源文件必须只由英文单词构成,否则会得到意想不到的结果 
 * @author lingyibin
 *
 */
public class TestTranslate {

	/**
	 * @param args
	 */
	public static void main(String[] args) {
		translate();
	}
	
	/**
	 * 翻译的主要实现函数
	 */
	public static void translate(){
		//得到源文件路径
		String srcFileName = "";
		srcFileName = javax.swing.JOptionPane.showInputDialog("请您 输入源文件路径!");
		
		File srcFile = new File(srcFileName);
		//源文件路径不合法
		if(!srcFile.exists() || !srcFile.isFile()){
			javax.swing.JOptionPane.showMessageDialog(null, "对不起,你输入的源文件路径不合法!");
		}
		
		//翻译后的文件名,首先得到新文件名,即在原文件名的后面加上"_translated",保留后缀名
		int index = srcFileName.lastIndexOf(".");
		String newFileName = srcFileName.substring(0,index) + "_translated" + srcFileName.substring(index);
		
		//得到词库文件路径
		String cikuFileName = "";
		cikuFileName = javax.swing.JOptionPane.showInputDialog("请您 输入词库文件路径!");
		
		File cikuFile = new File(cikuFileName);
		//词库文件路径不合法
		if(!cikuFile.exists() || !cikuFile.isFile()){
			javax.swing.JOptionPane.showMessageDialog(null, "对不起,你输入的词库文件路径不合法!");
		}
		
		try {
			String tmpStr = null;
			String[] strs;
			
			//新建一个缓冲流来读取词库文件
			BufferedReader br = new BufferedReader(
					new InputStreamReader(
							new FileInputStream(cikuFile)));
			
			//用一个MAP来存放键值对
			Map<String, String> mapTrn = new HashMap<String, String>();
			
			while((tmpStr = br.readLine()) != null){	//如果未到末尾 且 读到的不是空行
				if(!tmpStr.equals("")){					
					strs = tmpStr.split("="); 
					mapTrn.put(strs[0].toLowerCase(), strs[1]); 
				}
			}
			
			//新建一个字节流来读取源文件
			FileInputStream fis = new FileInputStream(srcFile);

			//新建一个Writer来写入翻译后的字符
			OutputStreamWriter osw = new OutputStreamWriter(
					new FileOutputStream(newFileName));
			
			int c;
			tmpStr = "";
			while((c = fis.read()) != -1){
				if(!((c>='a' && c<='z') || (c>='A' && c<='Z'))){
					if(mapTrn.get(tmpStr.toLowerCase()) != null){
						osw.write(mapTrn.get(tmpStr.toLowerCase()).toCharArray());
						tmpStr = "";
					}
					if(c != 32) osw.write(c);
				}
				else{
					tmpStr += (char)c;
				}
			}
			if(mapTrn.get(tmpStr.toLowerCase()) != null){
				osw.write(mapTrn.get(tmpStr.toLowerCase()).toCharArray());
				tmpStr = "";
			}
			
			osw.flush();
			osw.close();
		} catch (Exception e) {
			//e.printStackTrace();
			javax.swing.JOptionPane.showMessageDialog(null, "对不起,源文件读取时出错!");
		}
		
	}
}

?

?然后得自己建一个词库,格式如下:

Love=爱
I=我
China=中国

?

我把这个程序相关的文件都上传到附件中了,有兴趣的朋友可以去测试测试!

发表评论
用户名: 匿名