package com.linux.tool;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.FileWriter;
import java.io.FilenameFilter;
import java.io.IOException;
import java.io.OutputStream;
import java.io.Writer;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Map.Entry;
import jxl.Workbook;
import jxl.write.Label;
import jxl.write.WritableSheet;
import jxl.write.WritableWorkbook;
import jxl.write.WriteException;
import jxl.write.biff.RowsExceededException;
import org.dom4j.Document;
import org.dom4j.DocumentException;
import org.dom4j.DocumentHelper;
import org.dom4j.Element;
import org.dom4j.io.OutputFormat;
import org.dom4j.io.SAXReader;
import org.dom4j.io.XMLWriter;
import com.linux.tool.entity.StringEntity;
public class StringToolMain {
static HashMap<String, StringEntity> stringsHashMap = new HashMap<String, StringEntity>();
// public static final String DEFAULT_LANGUAGE_FLAG = "values";
public static final String[] LANGUAGE = { "values","values-en",
/* "values-zh-cn",
"values-en-rGB",
"values-de-rDE",
"values-fr-rFR", // values-fr-rFR
"values-es-rES", "values-it-rIT", "values-pt-rPT", "values-nl-rNL",
"values-sv-rSE", "values-no-rNO", "values-fi-rFI", "values-da-rDK",
"values-hu-rHU", "values-pl-rPL", "values-cs-rCZ", "values-tr-rTR",
"values-ru-rRU", "values-el-rGR", "values-ro-rRO", */"android_id"
};
// 国家/地区 语言缩写代码 查询备用
// 国家/地区 语言代码 国家/地区 语言代码
// 简体中文(中国) zh-cn 繁体中文(台湾地区) zh-tw
// 繁体中文(香港) zh-hk 英语(香港) en-hk
// 英语(美国) en-us 英语(英国) en-gb
// 英语(全球) en-ww 英语(加拿大) en-ca
// 英语(澳大利亚) en-au 英语(爱尔兰) en-ie
// 英语(芬兰) en-fi 芬兰语(芬兰) fi-fi
// 英语(丹麦) en-dk 丹麦语(丹麦) da-dk
// 英语(以色列) en-il 希伯来语(以色列) he-il
// 英语(南非) en-za 英语(印度) en-in
// 英语(挪威) en-no 英语(新加坡) en-sg
// 英语(新西兰) en-nz 英语(印度尼西亚) en-id
// 英语(菲律宾) en-ph 英语(泰国) en-th
// 英语(马来西亚) en-my 英语(阿拉伯) en-xa
// 韩文(韩国) ko-kr 日语(日本) ja-jp
// 荷兰语(荷兰) nl-nl 荷兰语(比利时) nl-be
// 葡萄牙语(葡萄牙) pt-pt 葡萄牙语(巴西) pt-br
// 法语(法国) fr-fr 法语(卢森堡) fr-lu
// 法语(瑞士) fr-ch 法语(比利时) fr-be
// 法语(加拿大) fr-ca 西班牙语(拉丁美洲) es-la
// 西班牙语(西班牙) es-es 西班牙语(阿根廷) es-ar
// 西班牙语(美国) es-us 西班牙语(墨西哥) es-mx
// 西班牙语(哥伦比亚) es-co 西班牙语(波多黎各) es-pr
// 德语(德国) de-de 德语(奥地利) de-at
// 德语(瑞士) de-ch 俄语(俄罗斯) ru-ru
// 意大利语(意大利) it-it 希腊语(希腊) el-gr
// 挪威语(挪威) no-no 匈牙利语(匈牙利) hu-hu
// 土耳其语(土耳其) tr-tr 捷克语(捷克共和国) cs-cz
// 斯洛文尼亚语 sl-sl 波兰语(波兰) pl-pl
// 瑞典语(瑞典) sv-se 西班牙语 (智利) es-cl
// public static final String I18N_TEMP_DIR = "/Users/kylinhuang/Desktop/ExcelUtil/";
private static final String Excel_Dir = "D:/EclipssProjects/stringtool/files/excels/";/*存放excel的文件夹路径*/
// private static final String StringFileName = "strings.xml";
// public static final String StringDir = "/Users/kylinhuang/Desktop/ExcelUtil/values/";
private static final String StringDir = "D:/EclipssProjects/stringtool/files/";/*存放strings.xml的文件夹路径*/
/**
* @param args
*/
public static void main(String[] args) {
// readDirALLXml(StringDir + LANGUAGE[0], 0); // 读取默认"values/strings.xml"
//
// printMap();
//
// readDirALLXml(StringDir + LANGUAGE[1], 1); // 读取中文
// // "values-en/strings.xml",
// printMap();
for(int i=0;i<LANGUAGE.length-1;i++){
readDirALLXml(StringDir + LANGUAGE[i], i); // 读取默认"values/strings.xml"
printMap();
}
try {
String Excel_paht = Excel_Dir + System.currentTimeMillis() + ".xls";
onStringsXml2Excel(Excel_paht);
// String xmlDir = Excel_Dir + System.currentTimeMillis() + "/";
// onExcel2StringsXml(xmlDir);
} catch (Exception e) {
e.printStackTrace();
}
}
private static void onExcel2StringsXml(String xmlDir) throws IOException,
DocumentException {
File dir = new File(xmlDir);
if (dir.exists() == false)
dir.mkdirs();
for (int i = 0, size = LANGUAGE.length-1; i < size; i++) {
File f = new File(xmlDir + LANGUAGE[i] + "/string.xml");
if (f.getParentFile().exists() == false){ f.getParentFile().mkdirs();}
if (f.exists() == false){ f.createNewFile();}
Document document = DocumentHelper.createDocument();
Element resources = document.addElement("resources");
for (String key : stringsHashMap.keySet()) {
// System.out.println("key= " + key + " and value= " +
// list.get(key).id + " " + list.get(key).LANGUAGE[0]);
String value = stringsHashMap.get(key).StringEntityLANGUAGE[i];
if (null != value && value.length() > 0) {
Element s = resources.addElement("string");
s.addAttribute("name", key);
s.addText(stringsHashMap.get(key).StringEntityLANGUAGE[i]);
}
}
try {
OutputFormat outputFormat = OutputFormat.createPrettyPrint();
outputFormat.setLineSeparator("\r\n");// 这是为了换行操作
Writer writer = new FileWriter(xmlDir + LANGUAGE[i] + "/string.xml");
XMLWriter outPut = new XMLWriter(writer, outputFormat);
outPut.write(document);
outPut.close();
} catch (Exception e) {
e.printStackTrace();
}
//
// OutputFormat format = OutputFormat.createPrettyPrint(); //
// 设置美观的缩进格式,便于阅读
// format.setEncoding("gb2312"); // 设置文本格式
// // format =
// OutputFormat.createCompactFormat();//设置紧凑格式(消除多余空格),便于下载
// XMLWriter writer = new XMLWriter(System.out, format);
// writer.setWriter(fileWriter);
// writer.write(doc);
// writer.close();
// OutputFormat format = OutputFormat.createPrettyPrint();
// XMLWriter writer = new XMLWriter(new FileOutputStream(f),format);
// writer.write(doc);
// writer.close();
}
}
private static void printMap() {
StringBuffer str;
for (String key : stringsHashMap.keySet()) {
System.out.println("key= " + key + " and value= "
+ stringsHashMap.get(key).id + " " + stringsHashMap.get(key).StringEntityLANGUAGE[0]);
}
}
private static void onStringsXml2Excel(String excel_paht) {
File file = new File(excel_paht);
if (!file.getParentFile().exists()) {
file.mkdirs();
}
OutputStream excelStream;
try {
excelStream = new FileOutputStream(excel_paht);
// create one book
WritableWorkbook workbook = Workbook.createWorkbook(excelStream);
// create sheet
WritableSheet sheet = workbook.createSheet("1", 0);
// add titles
for (int x = 0, size = LANGUAGE.length; x < size; x++) {
sheet.addCell(new Label(x, 0, LANGUAGE[x]));
}
int y = 0;
// add data
for (Entry<String, StringEntity> entry : stringsHashMap.entrySet()) {
// String key = entry.getKey();
StringEntity e = (StringEntity) entry.getValue();
int size = e.StringEntityLANGUAGE.length;
for (int x = 0; x < size; x++) {
if (x == LANGUAGE.length-1) { // android_id
sheet.addCell(new Label(LANGUAGE.length-1, y + 1, e.id));
} else {
String content = e.StringEntityLANGUAGE[x] !=
null ? e.StringEntityLANGUAGE[x].toString() : "";
if (null != content && content.length() > 0) {
sheet.addCell(new Label(x, y + 1, content));
}
}
}
y++;
}
workbook.write();
workbook.close();
excelStream.close();
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} catch (