问题描述
项目需要做俄语国际化,历史代码里有的字段有俄语翻译、有的没有,需要把没翻译的中文整理出来翻译成俄文。
大概思路
- 列出所有res目录,根据是否包含values-ru分成两组(半自动
- 在“不包含”分组里把需要翻译的中文文件复制出来(半自动)
- 在“包含”组里把需要补充翻译的字段复制出来(纯手动)
- 把复制出来需要翻译的xml文件转换成excel用于翻译(自动)
- 把翻译好的文件根据转换成xml,根据之前记录的res目录放到项目里(半自动)
代码
列出所有string.xml文件路径
public static void listResPath(String src) throws Exception {
File path1 = new File(src);
if (!path1.exists()) {
return;
}
File[] items = path1.listFiles();
if (items == null) return;
for (File item : items) {
if (item.isFile()) {
if (!item.getName().equals("strings.xml")) continue;
System.out.println(item.getPath());
} else {
listResPath(item.getPath());
}
}
}
手工找出不包含ru的模块,然后在项目里看一下应该翻译哪个文件,把需要翻译的文件路径放到一个txt里,例如:
D:\work\aaa\src\main\res\values-zh-rCN\strings.xml
D:\work\bbb\src\main\res\values-zh-rCN\strings.xml
D:\work\ccc\src\main\res\values\strings.xml
D:\work\ddd\src\main\res\values-zh\strings.xml
复制这些文件到translate文件夹
private static List<String> needCopyFiles = new ArrayList<>();
private static void getNeedCopyFiles() {
try {
FileInputStream inputStream = new FileInputStream("D:\xxx\needCopy.txt");
BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(inputStream));
String str;
while ((str = bufferedReader.readLine()) != null) {
if (!str.isEmpty()) {
needCopyFiles.add(str);
}
}
bufferedReader.close();
} ca