将工程里面的中文硬编码抽取到string
- java/kotlin代码
- xml 布局文件
- kotlin模版字符串
- 自动生成xmlkey值、防重复策略
- 自动替换引用
- 自动导包
- 生成新增的strings文件内容 拷贝到粘贴板
- 使用步骤
- 初始化配置,配置路径、是否仅扫描等
val modulePath = "E:\\AndroidProject\\LWanAndroid\\commonlib"
// 预设的 中文 - key 映射表
val keyMap = LinkedHashMap<String, String>()
val presetKeyMap = LinkedHashMap<String, String>()
val config = TranslateConfig(presetKeyMap, keyMap, modulePath, false, false)
- 配置处理流程 包括 初始化、设置预置key、处理java、kt、XML文件以及结果输出
val processors = arrayListOf(
InitProcessor(), // todo: 必须 初始化配置 ,在里面设置翻译实例实现
PresetKeyProcessor(arrayOf(XMLKeyParser("$modulePath/src/main/res/values/strings.xml"))), // 可选 预设的key值
XMLFileProcessor(), // 可选 转换 xml 代码
CodeFileProcessor(filterFileName), // 可选 转换 kotlin、java代码
ResultOutputProcessor(), // 必须 结果输出,可自行修改为json等格式
// GenerateEnglishProcessor() // 可选,输出英文
)
- 配置预设的key值,默认为模块的strings文件
(arrayOf(XMLKeyParser("$modulePath/src/main/res/values/strings.xml"))), // 可选 预设的key值
- 替换百度翻译api的appid和key,或者自行实现翻译功能,默认提供百度、随机key生成,参考
ITranslateAPI
和子类
InitProcessor() // todo: 必须 初始化配置 ,在里面设置翻译实例实现
- 配置自动导包的内容,根据项目自行实现
// todo: 根据项目 返回对应的生成的字符串模版
// todo: 根据项目 返回对应自动导入的包
val config = TranslateConfig(presetKeyMap, keyMap, modulePath, { xmlKey: String? ->
return@TranslateConfig "BaseApplication.getApplication().getString(R.string.$xmlKey)"
},
importArray = arrayOf("import com.hjl.commonlib.base.BaseApplication", "import com.hjl.commonlib.R")
)
- 配置需要过滤的代码文件,默认自带log等,具体参考
ICodeStringFilter
和子类实现
// TransCodeUtils.kt
// 代码匹配过滤器
val codeFilter = listOf(NoteCodeFilter(), LogCodeFilter())
- 运行Main.kt文件,并可以根据项目需要自行新增processor,例如英文的文件输出
GenerateEnglishProcessor() // 可选,输出英文XML