Android(安卓)解析strings.xml国际化
16lz
2021-01-26
1.国际化需要导出stringsxml中文,找了个小工具能够快速抽取strings.xml中的中文
步骤:
1. 新建 assets文件夹,内部新建一个 xxx.plist 文件(就是ios用的plist文件),
2. api ‘com.googlecode.plist:dd-plist:1.20’ 依赖,在app.config中
工具类:
package com.locojoy.restart.utils;import android.content.Context;import com.core.logger.Logger;import com.dd.plist.NSArray;import com.dd.plist.NSDictionary;import com.dd.plist.PropertyListFormatException;import com.dd.plist.PropertyListParser;import org.xml.sax.SAXException;import java.io.IOException;import java.text.ParseException;import java.util.ArrayList;import java.util.List;import javax.xml.parsers.ParserConfigurationException;/** * Author: yangweichao * Date: 2019-05-18 10:54 * Description: 懒汉Dcl 单例 解析Ios Plist文件 */public class PlistUtils { private static volatile PlistUtils plistUtil = null; public static PlistUtils getInstance() { if (plistUtil == null) { synchronized (PlistUtils.class) { if (plistUtil == null) { plistUtil = new PlistUtils(); } } } return plistUtil; } public <T> T parserPlist(Context context, T list) { try { NSArray ary = (NSArray) PropertyListParser.parse(context.getAssets().open("DPABookCIconDetails.plist")); for (int i = 0; i < ary.count(); i++) {//遍历当前NSArray//将 # 当前遍历的结果也是字典。将其存放入dic(字典)中保存 NSDictionary dic = (NSDictionary) ary.objectAtIndex(i); String iconId = (dic.objectForKey("iconId")).toJavaObject().toString(); String color = (dic.objectForKey("color")).toJavaObject().toString(); String iconname_h = (dic.objectForKey("iconname_h")).toJavaObject().toString(); String iconname_d = (dic.objectForKey("iconname_d")).toJavaObject().toString(); Logger.d(iconId + ":" + color + ":" + iconname_d + ":" + iconname_h); } } catch (IOException e) { e.printStackTrace(); } catch (PropertyListFormatException e) { e.printStackTrace(); } catch (ParseException e) { e.printStackTrace(); } catch (ParserConfigurationException e) { e.printStackTrace(); } catch (SAXException e) { e.printStackTrace(); } return list; } public List<String> parserList(Context context, List<String> list) { if (null == list) return new ArrayList<>(); try { NSArray ary = (NSArray) PropertyListParser.parse(context.getAssets().open("DPABookCIconIds.plist")); for (int i = 0; i < ary.count(); i++) {//遍历当前NSArray//将 # 当前遍历的结果也是字典。将其存放入dic(字典)中保存 String value = String.valueOf(ary.objectAtIndex(i)); list.add(value); } } catch (IOException e) { e.printStackTrace(); } catch (PropertyListFormatException e) { e.printStackTrace(); } catch (ParseException e) { e.printStackTrace(); } catch (ParserConfigurationException e) { e.printStackTrace(); } catch (SAXException e) { e.printStackTrace(); } return list; }}
3.在正确的位置调用
List<String> strings=new ArrayList<>(); PlistUtils.getInstance().parserList(this,strings); for (int i = 0; i < strings.size(); i++) { System.out.println(strings.get(i)); }
输出结果如下:
新建class,使用Android studio 垂直选中工具,【在类中,右键选择 column selection Model】 直接选中,拷贝到excel中提供给翻译人就ok。
更多相关文章
- Android(安卓)Studio中的跨进程访问(aidl)
- Android手机开发ubuntu系统中常用的搜索命令
- 文件管理器-android源代码
- android 之数据存储(IO)
- windows 下装ubuntu
- Android修改XML文件
- android学习笔记1:HelloWorld
- Android(安卓)Video简述
- android Q 使用 ACTION_OPEN_DOCUMENT_TREE 选择目录进行遍历文