多语言资源文件的过滤工具
来源:互联网 发布:搜索阿里云免费开通码 编辑:程序博客网 时间:2024/05/16 18:56
最近在做项目的时候,由于做的是国外的电信项目,因此经常涉及到多语言的国际资源化问题。
而项目组目前使用的是SSI框架,因此国际资源的读取等问题直接采用s:text标签即可。
但是,当我们在实现某一种语言之后,经常会发现两个不同语言的资源文件的 key值有遗漏等问题,很不利于整合。
为止,我自己写了一个很简单的小工具,主要是实现:当有多个资源文件时,查找对应的key,把key值不同的选项找出来。
并且,根据Key值新生成一个文本文件,以方便在整理一些不认识的语言的翻译等问题时带来方便。
以下为CombinationProperties.java源码:
import java.io.FileInputStream;import java.io.FileNotFoundException;import java.io.FileOutputStream;import java.io.IOException;import java.io.UnsupportedEncodingException;import java.util.Iterator;import java.util.Properties;import java.util.Map.Entry;public class CombinationProperties{ private static Properties propertiesUS; private static Properties propertiesSA;/** *输出文件的文件夹路径。**/ private static final String path = "F:\\workspace1\\PropertiesDoIt\\"; private static final String fileOutSa = "globalMessages_ar_SA.txt"; private static final String fileOutUs = "globalMessages_en_US.txt"; private static final String fileNoTranslate = "globalMessages_noTranslate.txt"; private static final String fileOut = "globalMessages.txt";//资源文件名 private static final String filePathUS = "globalMessages_en_US.properties";//资源文件名 private static final String filePathSA = "globalMessages_ar_SA.properties"; public static void main(String[] args) { //对合入的Map输出到指定的文件中。 FileOutputStream fosUs = null; FileOutputStream fosSa = null; FileOutputStream fos = null; FileOutputStream fosNoTranslate = null; try { fosUs = new FileOutputStream(path + fileOutUs); fosSa = new FileOutputStream(path + fileOutSa); fos = new FileOutputStream(path + fileOut); fosNoTranslate = new FileOutputStream(path + fileNoTranslate); //循环 Iterator<Entry<Object, Object>> propertiesUSIter = propertiesUS.entrySet() .iterator(); while (propertiesUSIter.hasNext()) { Entry<Object, Object> e = propertiesUSIter.next(); String strKey = (String) e.getKey(); String strValue = (String) e.getValue(); //如果该Key值不存在于propertiesSA中,则表示该资源文件只存在于US中,获取后把他保存在onlyUSProperties.txt中 if (null == propertiesSA.get(strKey)) { fosUs.write((strKey + "=" + strValue + "\n").getBytes("utf-8")); } //则表示在两个资源文件都存在,则需要把保存在combitionText.txt文件中。 else { String strValueSa =propertiesSA.getProperty(strKey); fos.write((strKey + "=" + strValue + "\n").getBytes("utf-8")); fos.write((strKey + "=" + strValueSa + "\n").getBytes("utf-8")); //如果两个资源文件中的Value相等,则表示有资源文件没有提交翻译 if(null!=strValue && strValue.equals(strValueSa)) { fosNoTranslate.write((strKey + "=" + strValue + "\n").getBytes("utf-8")); fosNoTranslate.write((strKey + "=" + strValueSa + "\n").getBytes("utf-8")); } //共同拥有的文件,需要移除(剩下的则为只有SA有的资源文件,保存在onlySAProperties.txt中) propertiesSA.remove(strKey); } } //过滤之后剩下的都只存在于SA中的资源文件 Iterator<Entry<Object, Object>> propertiesSAIter = propertiesSA.entrySet() .iterator(); while (null != propertiesSAIter && propertiesSAIter.hasNext()) { Entry<Object, Object> e = propertiesSAIter.next(); String strKey = (String) e.getKey(); String strValue = (String) e.getValue(); fosSa.write((strKey + "=" + strValue + "\n").getBytes("utf-8")); // propertiesSAOnlyMap.put(strKey, strValue); } } catch (UnsupportedEncodingException e1) { System.out.println(e1); e1.printStackTrace(); } catch (FileNotFoundException e) { System.out.println(e); e.printStackTrace(); } catch (IOException ioe) { System.out.println(ioe); ioe.printStackTrace(); } finally { try { fosSa.close(); } catch (IOException e) { e.printStackTrace(); } try { fos.close(); } catch (IOException e) { e.printStackTrace(); } try { fosUs.close(); } catch (IOException e) { e.printStackTrace(); } try { fosNoTranslate.close(); } catch (IOException e) { e.printStackTrace(); } } } static { init(); } public static void init() { propertiesUS = new Properties(); propertiesSA = new Properties(); try { FileInputStream inputStreamUS = new FileInputStream(path + filePathUS); propertiesUS.load(inputStreamUS); FileInputStream inputStreamSA = new FileInputStream(path + filePathSA); propertiesSA.load(inputStreamSA); } catch (FileNotFoundException e) { System.out.println("properties文件不存在" + e); return; } catch (IOException e) { System.out.println("Client.properties文件解析失败" + e); return; } }}
- 多语言资源文件的过滤工具
- C# 多语言资源文件的访问
- 资源文件(多语言)的管理
- maven的资源过滤
- 多语言资源文件命名
- 过滤Android工程中多余的资源文件
- 过滤Android工程中多余的资源文件
- 过滤Android工程中多余的资源文件
- 过滤Android工程中多余的资源文件
- maven中静态资源和字节码文件的过滤
- 用文件对比工具过滤较旧文件的方法
- C#增加语言资源文件的文件
- 共享一下“资源文件做多语言版本”的类
- 利用.net2.0的资源文件实现多语言开发!
- net2.0的资源文件实现多语言开发! 2222
- 利用.net2.0的资源文件实现多语言开发!
- 纯资源的dll文件来实现多语言
- 多语言的资源包文件比较检查,自动核对。
- 解密module_init
- python 2.7 安装
- Java复习笔记----数组小结
- Oracle Net Services - Tracing and Logging at a Glance
- Ubuntu文件传送及SSH登入
- 多语言资源文件的过滤工具
- 关于写程序的一些理解
- AppWidget启动流程部分 Launcher分析
- ios 获取当前屏幕的方向 隐藏状态栏
- CityEngine小区模型制作初探
- JBPM笔记
- [BetterExplained]为什么你应该(从现在开始就)写博客
- 设计模式8 - 组合模式Composite
- 关于LiveSuit.exe无法启动