壹佰网|ERP100 - 企业信息化知识门户

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 7153|回复: 0

关于Compiere的汉化,转载yangzhijie1488的专栏

[复制链接]
发表于 2010/11/18 11:07:54 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。如果您注册时有任何问题请联系客服QQ: 83569622  。

您需要 登录 才可以下载或查看,没有帐号?注册

x
compiere汉化原理 收藏 几天仔细的研究了开源软件compiere,版本是compiere。经历了安装->编译->汉化->探索。
今天下午一直在研究compiere3.3的汉化,没有一点思路,因为数据库中的表非常的多,有好几百了,也没有静下心来研究各个表之间的关系,在网上搜索了很久,3.3版本的的汉化都是收费的。看了compiere wiki中的一篇文章http://www.compiere.com/support/language-packs.php按照上面的去做,有几部卡住了。
最终我打算自己去翻译,可是翻译了半个小时,我觉得这是一个巨大的工程,单凭我一个人,是不能完成。于是下载了compiere3.02的版本的汉化包,仔细的看了安装方法,主要是利用utils文件夹下面的RUN_TrlImport.bat文件,把XML文件导入到数据库。RUN_TrlImport.bat主要是利用org.compiere.install.Translation这个类来完成导入的工作,于是在eclipse中寻找该类,但是没有找到,不知道为什么?算了,找不到也没有办法。
继续研究compiere3.02的汉化包,全部是xml文件,汉化的文件名是与数据中的文件名一一对应的,例如AD_Column_Trl_zh_CN.xml对应的就是AD_Column表。再仔细看表中的内容
<?xml version="1.0" encoding="UTF-8" ?>
- <compiereTrl language="zh_CN" table="AD_Column">
- <row id="100" trl="Y">

<value column="Name" original="Table"></value>


</row>


- <row id="102" trl="Y">

<value column="Name" original="Name">名称</value>


</row>


- <row id="103" trl="Y">

<value column="Name" original="Description">描述</value>


</row>
<row>
   ......
</row>
</compiereTrl>
colum="Name" 对应着表中的column列
original="Table"对应着表中"Name"列的内容为Table
表就是Table的翻译。
于是我做一个大胆的猜测:
(1) 文件名对应着数据中的表
(2)修改表中“Name"列的"orginal"数据为翻译过的值,生成SQL语句,然后执行SQL语句
思路想好,然后开始去写程序
(1)首先取得zh_CN中的文件名
(2)解析对应XML文件,取得orginal == 翻译的值,
(3)生成SQL语句,
(4)在Navicat for Oracle中执行导入sql语句,执行
(5)某些语句存在错误,需要修改一些SQL语句
(6)启动compier客户端,
(7)激动人心的时刻到来
[img]mhtml:file://H:\Compiere计划\文档\compiere汉化原理 - yangzhijie1488的专栏 - CSDN博客.mht!http://hi.csdn.net/attachment/201011/13/0_1289655380EtI1.gif[/img]
大部分的内容都已经汉化。

附:XML转换为SQL语句的代码package org.database;





import java.io.BufferedWriter;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.util.Vector;
import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.parsers.ParserConfigurationException;
import org.w3c.dom.Document;
import org.w3c.dom.Element;
import org.w3c.dom.Node;
import org.w3c.dom.NodeList;
public class XmlOut {
public static void readXMLFile(String location,String txtLocation,String txtName) throws IOException {
DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
DocumentBuilder db = null;
try {
db = dbf.newDocumentBuilder();
} catch (ParserConfigurationException pce) {
System.err.println(pce);
System.exit(1);
}
Document doc = null;
try {
doc = db.parse(location);
} catch (Exception e) {
System.err.println(e);
System.exit(1);
}

Element root = doc.getDocumentElement();
System.out.println("根元素为:"+root.getTagName());
NodeList rows=root.getElementsByTagName("row");
System.out.println("总共有"+rows.getLength()+"节点");
String orginalName[][] = new String[rows.getLength()][2];

for (int i=0;i<rows.getLength();i++)
{
Node row = rows.item(i);
orginalName[0] = row.getFirstChild().getTextContent();
orginalName[1] = row.getFirstChild().getAttributes().item(1).getTextContent();
}



File write = new File(txtLocation);
BufferedWriter bw = new BufferedWriter(new FileWriter(write));
for (int i=0;i<rows.getLength();i++)
{
String text = "UPDATE \"JACK\".\""+
txtName+
"\" SET \"NAME\"=\'"+
orginalName[0]+
"\' WHERE \"NAME\"=\'"+
orginalName[1]+
"\';";
bw.write(text+"\r\n");
}
bw.close();


}
/**
* @param args
*/
public static void main(String[] args) {
System.out.println("开始...");
File directory = new File("C:/My Program/UpDataInDatabase/zh_CN1/");
File[] files = directory.listFiles();
for (int i = 0; i < files.length; i++) {
try {
readXMLFile(
files.getAbsolutePath(),
files.getAbsolutePath().replace(".xml", "")+".sql",
files.getName().replace("_Trl_zh_CN.xml", "").toUpperCase());
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
/*
System.out.print(files.getAbsolutePath()+" "+
files.getName().replace(".xml", "")+".sql "+
files.getName().replace("_Trl_zh_CN.xml", "").toUpperCase()+"\r\n");*/
}
System.out.println("结束...");
}
}

您需要登录后才可以回帖 登录 | 注册

本版积分规则

QQ|Archiver|小黑屋|手机版|壹佰网 ERP100 ( 京ICP备19053597号-2 )

Copyright © 2005-2012 北京海之大网络技术有限责任公司 服务器托管由互联互通
手机:13911575376
网站技术点击发送消息给对方83569622   广告&合作 点击发送消息给对方27675401   点击发送消息给对方634043306   咨询及人才点击发送消息给对方138011526

GMT+8, 2025/11/30 03:18 , Processed in 0.011067 second(s), 14 queries , File On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表