android多国语言翻译工具,一键生成28国家翻译6666翻车了

最近把软件发到google play苦于多国语言,手动翻译数量太多太蛋疼,于是用百度翻译api进行多国语言翻译。

不多说直接上代码;


""; 

匹配的是

Free 3D starter中的



"(?<=\\\">)([\\S\\s]*?)(?=

匹配的是Free 3D starter中的

中的Free 3D starter

具体正则,大家自己去去理解哈,就不多说了。

import java.io.BufferedReader;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileWriter;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.ArrayList;
import java.util.List;
import java.util.regex.Matcher;
import java.util.regex.Pattern;

import com.baidu.translate.demo.TransApi;
import com.baidu.translate.demo.TranslateBean;
import com.baidu.translate.demo.TranslateUtils;
import com.baidu.translate.demo.TsBean;
import com.google.gson.Gson;
import com.google.gson.JsonElement;
import com.google.gson.JsonObject;
import com.google.gson.JsonParser;

/**
 * 多国语言翻译
 * 
 * @author x002
 * 
 */
public class Main {

	// 在平台申请的APP_ID 详见
	// http://api.fanyi.baidu.com/api/trans/product/desktop?req=developer
	private static final String APP_ID = "20180320000138156";
	private static final String SECURITY_KEY = "xyvN5BPetHKe5bbNLSrj";

	static final String FILE_ROOT_ZH = "C:\\Users\\x002\\Desktop\\langetranslation\\java\\src\\lang\\values-zh-rCN\\";
	static final String FILE_ROOT = "C:\\Users\\x002\\Desktop\\langetranslation\\java\\src\\lang\\";
	public static void main(String[] args) {
		TransApi api = new TransApi(APP_ID, SECURITY_KEY);

		List sourceStrings=getLines(FILE_ROOT_ZH+"strings.xml");
		List sourceArrarys=getLines(FILE_ROOT_ZH+"arrays.xml");
		List translatebeans = TranslateUtils.getList();
		for (TranslateBean translateBean : translatebeans) {
			
			
			List sourceStringRelults=new ArrayList<>();
			//解析string类型
			for(String str:sourceStrings){
				if(isCanTs(str)){
					if(str.contains("";
						peiStart=findString(peiStart,str);
						String peiMid="(?<=\\\">)([\\S\\s]*?)(?=";
						TsBean tsBean=getJsonTs(relult);
						sourceStringRelults.add(peiStart+tsBean.trans_result.get(0).dst+end);
					}else if(str.contains("";
						peiStart=findString(peiStart,str);
						String peiMid="(?<=\\\">)([\\S\\s]*?)(?=";
						TsBean tsBean=getJsonTs(relult);
						sourceStringRelults.add(peiStart+tsBean.trans_result.get(0).dst+end);
					}else if(str.contains(" T jsonStrToObject(String jsonStr, Class clazz){

	       try{

	              JsonElement je = new JsonParser().parse(jsonStr);

	              T t =  new Gson().fromJson(je, clazz);

	              return t;

	       }catch(Exception e){

	              e.printStackTrace();

	              return null;

	       }

	}
	public static void saveStringsToFile(final String strFilename,List sourceStringRelults){
		
		String strBuffer="";
		for(String str:sourceStringRelults){
			strBuffer+=str+"\n";
		}
		
		TextToFile(strFilename,strBuffer);
		
	}
	 /** 
	   * 传入文件名以及字符串, 将字符串信息保存到文件中 
	   *  
	   * @param strFilename 
	   * @param strBuffer 
	   */  
	  public static void TextToFile(final String strFilename, final String strBuffer)  
	  {  
	    try  
	    {      
	      // 创建文件对象  
	      File fileText = new File(strFilename);  
	   
	      //C:\Users\x002\Desktop\langetranslation\java\src\lang\values-en\strings.xml
	      
	      if(!fileText.getParentFile().exists()){ 
	    	  fileText.getParentFile().mkdirs();
	       }
	      
	      if(fileText.exists())
	    	  fileText.delete();
	      if(!fileText.exists()){ 
	    	  fileText.createNewFile(); 
	       } 
	      // 向文件写入对象写入信息  
	      FileWriter fileWriter = new FileWriter(fileText);  
	  
	      // 写文件        
	      fileWriter.write(strBuffer);  
	      // 关闭  
	      fileWriter.close();  
	    }  
	    catch (IOException e)  
	    {  
	      //  
	      e.printStackTrace();  
	    }  
	  }  
	  
	public static String findString(String ppp,String body){
		 Pattern p = Pattern
                 .compile(ppp);
         Matcher m = p.matcher(body);
         while (m.find()) {
             String json = m.group();
             if (json!=null&&json.length()>0) {
                 return json;
             }
         }
		return null;
	}

	public static List getLines(String path) {
		FileInputStream fis = null;
		InputStreamReader isr = null;
		BufferedReader br = null; // 用于包装InputStreamReader,提高处理性能。因为BufferedReader有缓冲的,而InputStreamReader没有。
		List lines=new ArrayList();
		try {
			String str = "";
			fis = new FileInputStream(path);// FileInputStream
			// 从文件系统中的某个文件中获取字节
			isr = new InputStreamReader(fis);// InputStreamReader 是字节流通向字符流的桥梁,
			br = new BufferedReader(isr);// 从字符输入流中读取文件中的内容,封装了一个new
			while ((str = br.readLine()) != null) {
				lines.add(str);
			}
		} catch (FileNotFoundException e) {
			System.out.println("找不到指定文件");
		} catch (IOException e) {
			System.out.println("读取文件失败");
		} finally {
			try {
				br.close();
				isr.close();
				fis.close();
			} catch (IOException e) {
				e.printStackTrace();
			}
		}

		return lines;
	}

	public static boolean isCanTs(String str){
		if(str.contains("resources>")||str.contains("

你可能感兴趣的:(android)