原先项目中的国际化用的是Messages.getString("xxx.xxx")的方式,后来打算换到OSGI的支持上,仿照Eclipse和LumaQQ,并且把资源文件按照package分拆成多个小文件,然后就变成了ActionMessage.xxx_xxx,如果每个文件逐一替换,工作量未免太大,于是想到了正则表达式:
- //文件读写的代码在此省略
- String regEx = "Messages.getString\\W\\W([a-zA-Z]+).([a-zA-Z]+\\d?+)\\W\\W";
- Pattern p = Pattern.compile(regEx);
- Matcher m = p.matcher(input);
- if (m.find()) {
- String s2 = m.replaceAll("WizardMessages." + m.group(1)
- + "_" + m.group(2));
- System.out.println(s2);
- } else
- System.out.println(input);