`
lingyibin
  • 浏览: 196242 次
  • 性别: Icon_minigender_1
  • 来自: 长沙
社区版块
存档分类
最新评论

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

    博客分类:
  • 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=中国

 

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

2
0
分享到:
评论
3 楼 tianaozhu 2014-02-09  
请问,我修改了词库和源文件怎么就不好用了, 我源文件是: My hometown is Chiana, I love China!
词库里也做了相应的添加。 可是当运行是显示源文件读取失败, 最后我加了感叹号,这回成功了,可是得到的新文件里只有一个叹号。 谢谢。
2 楼 lingyibin 2010-12-17  
是的,得自己去写一个大型词库!呵呵……
1 楼 qq123zhz 2010-12-10  
自己写字库,还得自己写分词吧。。。

相关推荐

    Java 开发--JSP机房上机收费管理系统(源代码+论文+外文翻译).rar

    《Java开发--JSP机房上机收费管理系统》是一套基于Java技术和JSP(Java Server Pages)实现的机房管理软件,旨在为教育机构或企事业单位的计算机机房提供便捷的上机计费与管理功能。该系统包含了完整的源代码、相关...

    JAVA+SQL离散数学题库管理系统(源代码+论文+外文翻译).rar

    锻炼了自己的动手实践能力、查阅资料能力和自学能力,在这次毕业设计之前对于JAVA语言比较陌生,JBuilder2006也只是听说过,具体的内容几乎不懂,通过这次毕业设计我了解了JAVA语言的大体体系,掌握了JBuilder2006...

    基于JAVA的推箱子游戏设计软件程序源码+word毕业论文文档.zip

    基于JAVA的推箱子游戏设计软件程序源码+word毕业论文文档. 基于JAVA的推箱子游戏系统主要用于实现游戏推箱子功能,提供多种不同难度的关卡。本系统结构如下: (1)初始化模块: 该模块包括屏幕初始化和游戏第一关的...

    毕业设计:小型证券术语解释及翻译系统的设计与开发(源代码)

    小型证券术语解释及翻译系统可以完成证券术语解释及翻译,并且具有术语管理功能,有如下2个方面的目标: 1)证券术语一览,通过按术语首字母拼音...在毕业设计的环境指导下积极查阅学习书籍,提高自己知识层面,锻炼动手

    JAVA初级入门电子版

    对于英语不熟练的读者,文件可能还提到了如灵格斯或有道桌面词典这样的翻译软件,这些软件可以帮助你理解英文术语和编程概念,确保学习过程畅通无阻。特别是有道桌面词典,它的句子翻译功能在处理编程语境时较为准确...

    Java学习指南1

    首先,要认识到Java语言的重要性和它在现代软件开发中的地位。Java以其“一次编写,到处运行”的理念,成为了最受欢迎的编程语言之一。不仅如此,Java也在企业级应用开发、移动应用开发(特别是Android平台)等领域...

    JAVA在线考试管理系统(源代码+LW+开题报告+外文翻译+英文文献+答辩PPT).rar

    Java在线考试管理系统是一款基于Java技术构建的教育信息化软件,它为教师、学生和管理员提供了一种便捷的方式来组织、实施和评估在线考试。本系统不仅包含源代码,还包含了相关的设计文档、论文、外文资料翻译以及...

    基于java的蚁群算法路由选择可视化动态模拟+源码程序+文献翻译

    总之,《基于Java的蚁群算法路由选择可视化动态模拟》是一个宝贵的教育资源,它不仅提供了理论知识,还有实践操作的示例,对于提升在算法设计、网络优化和软件开发等方面的能力具有显著的帮助。通过深入学习和研究,...

    JAVA高手学习心得体会

    阅读高质量的书籍,无论是原版还是翻译版,都是获取深入知识的有效途径。定期回顾所学,规划未来的学习路径,这样才能在Java的世界中不断进步。 总的来说,Java学习是一个渐进的过程,需要理论与实践相结合,积极...

    看牛人如何学习JAVA

    - **实际操作**:书中提到,在学习Java的过程中,应注重实践,不断动手编码来加深理解。此外,利用现有的资源如开源项目、社区讨论等也是提高技能的有效途径。 综上所述,《看牛人如何学习JAVA》这本书不仅涵盖了...

    java程序设计实验指导书2016年版本.doc

    参考书目包括由蔡翠平和唐大仕编著的《JAVA程序设计(修订本)》,侯捷翻译的《JAVA编程思想(第二版)》,丁振凡的《Java语言实用教程》及其配套实验指导书,这些书籍提供了丰富的学习资源。 在综合设计实验中,学生...

    侯捷译 thinking-in-java 2+J2SE实验手册

    《Thinking in Java》是Bruce Eckel的经典之作,中文版由侯捷翻译,是Java学习者不可或缺的参考书籍。这本书深入浅出地介绍了Java语言的核心概念和技术,包括面向对象编程、泛型、集合框架、多线程、网络编程等多个...

    自学java看什么书强力推荐15本必看书籍华清远见.pdf

    2. **《Agile Java》中文版**:这本书以单元测试和TDD(测试驱动开发)为主线,不仅教授Java基础知识,还引导读者形成敏捷编程思维。内容精炼,适合想要提升编程技巧和思维方式的程序员,但可能对完全初学者稍显深入...

    基于BS架构的软件项目实训-JSP-丁旭-ppt

    **基于BS架构的软件项目实训-JSP-丁旭-ppt** 在信息技术领域,BS(Browser/Server,浏览器/服务器)架构是一种广泛...同时,这样的实训有助于提高学生的动手能力和团队协作能力,为未来从事Web开发工作打下坚实基础。

    Sun2001Sun培训教程SL275中译本含源程序.rar

    《Sun2001Sun培训教程SL275中译本含源程序.rar》是一部针对Sun Microsystems公司在2001年推出的培训教程的中文翻译版,包含完整的源代码。这部教程旨在帮助学习者深入理解Sun的技术体系,特别是针对当时流行的Java...

    Google Android SDK开发范例大全(完整版)

    余志龙,来自于手机制造业、电视媒体业、网络、电信产业、软件开发等领域,擅长嵌入式系统软件设计、J2ME游戏开发、Android开发,以及J2EE、JSP、Servlet、JavaBeans、PHP、C#等程序语言,熟悉面向对象技术与Eclipse...

    计算机专业简历及对应日语翻译.pdf

    5. **培训经历**:接受了加拿大达内外企IT培训,专注于基于Unix的Java软件开发,深入理解Java语言和J2EE架构,完成项目实战并获得高级软件工程师培训证书。 6. **求职目标**:求职者期望成为Unix、Linux、Windows下...

    intra-mart 很好的学习资料教程 intramart 日文版教程

    【intra-mart 学习教程】:intra-mart 是一个企业级的Java平台,主要用于构建企业内部的Web应用程序,提供了一整套快速开发工具和框架,旨在提高开发效率和降低维护成本。本教程主要关注的是日文版的intra-mart教程...

Global site tag (gtag.js) - Google Analytics