如何为Localizable.strings2Excel快速新增转换功能?5脚本+4工具类的代码架构开发指南
【免费下载链接】Localizable.strings2ExcelPython command line tool for conversion between iOS strings files and excel files & between android strings.xml files and excl files. & strings files to android strings.xml files.项目地址: https://gitcode.com/gh_mirrors/lo/Localizable.strings2Excel
Localizable.strings2Excel 是一款开源的 Python 命令行转换工具,支持 iOS strings 文件、Android strings.xml 文件与 Excel 表格之间的互相转换,常用于多语言本地化团队协作。它的代码结构非常"教科书式":5 个转换脚本 + 4 个工具类,读懂这套架构后,你可以在 10 分钟内为项目新增一个转换方向(比如 strings 转 properties 文件)。
🗺️ 先看懂项目能做什么
项目内置 5 种转换方向,覆盖移动端多语言协作的完整闭环:
| 转换方向 | 入口脚本 | 典型场景 |
|---|---|---|
| strings → Excel | python/Strings2Xls.py | 把 iOS 多语言 strings 汇总给翻译团队 |
| Excel → strings | python/Xls2Strings.py | 翻译完成后回填 iOS 工程 |
| strings.xml → Excel | python/Xml2Xls.py | 把 Android 文案导出成表格 |
| Excel → strings.xml | python/Xls2Xml.py | 翻译回填 Android 工程 |
| strings → strings.xml | python/Strings2Xml.py | iOS 项目直接迁移到 Android |
示例数据就放在examples/目录,可以直接对照理解:
- iOS 格式:examples/ios/en.lproj/Localizable.strings,每行是
"key" = "value"; - Android 格式:examples/android/values/strings.xml,即
<string name="key">value</string>
两者语义完全一致,差别只在文件格式——这正是工具类存在的意义。
🧩 代码架构总览:5 脚本 + 4 工具类
所有源码集中在 python/ 目录,可以分成两层:
工具类层(被复用的核心)
| 工具类 | 文件 | 职责 |
|---|---|---|
| StringsFileUtil | python/StringsFileUtil.py | 读写 iOS strings 文件,含注释剥离、编码容错 |
| XmlFileUtil | python/XmlFileUtil.py | 读写 Android strings.xml,自动处理占位符格式 |
| XlsFileUtil | python/XlsFileUtil.py | 封装 xlrd 读取 Excel 工作表 |
| Log | python/Log.py | 彩色日志输出 |
工具类只暴露最小组合:getKeysAndValues(path)读入、writeToFile(keys, values, dir, name, additional)写出。无论哪个脚本、哪个转换方向,数据在内存中都统一流转为(keys, values)两个列表,这就是新增功能时最大的复用点。
脚本层(每个转换方向一个入口)
5 个脚本共享同一套"三段式"骨架,以Strings2Xls.py为例:
addParser()—— 用optparse.OptionParser定义命令行参数,如-f源目录、-t目标目录、-eExcel 存储形式startConvert(options)—— 参数校验后,遍历目录,调用工具类完成实际转换,输出带时间戳的结果目录main()—— 串联前两步并执行
新增脚本时照抄骨架,只替换中间的工具类调用即可。
🚀 三步新增一个转换功能(如 Excel → properties)
第一步:确定输入输出,选对工具类
转换的输入端用读取类,输出端用写出类。本例输入是 Excel,复用XlsFileUtil.getAllTables()拿到 sheet 数据(参考Xls2Strings.py中convertFromMultipleForm的遍历方式);输出 properties 文件没有现成写出方法,可仿照StringsFileUtil.writeToFile新增一个PropertiesFileUtil类。
第二步:新建脚本,复用三段式骨架
新建python/Xls2Properties.py,照抄python/Xls2Strings.py的addParser()/startConvert()/main()结构,把其中写入 strings 的部分换成新的工具类调用。
第三步:定义 CLI 参数并自测
沿用项目统一的参数命名习惯:-f源目录、-t目标目录、-a附加内容。跑通后用examples/目录做回归:
python python/Xls2Properties.py -f examples/ -t examples/output/💡 两个隐藏细节值得注意:
XmlFileUtil.writeToFile里用正则把 iOS 占位符%1$@转成 Android 的%1$s,跨平台转换的坑基本都藏在这类细节里- 所有脚本输出的目录名都带
%Y%m%d_%H%M%S时间戳后缀,避免覆盖历史结果
📦 安装与运行
项目基于 Python 2.x,依赖pyExcelerator和xlrd两个库:
git clone https://gitcode.com/gh_mirrors/lo/Localizable.strings2Excel cd Localizable.strings2Excel pip install pyExcelerator xlrd python python/Strings2Xls.py -f examples/ios/ -t examples/output完整的使用说明见 README.md,版本变更记录见 CHANGELOG.md。
✅ 小结
Localizable.strings2Excel 的架构精髓在于:格式差异被工具类完全封装,转换脚本只负责"调度"。想扩展新格式、新平台、新存储方式时,先问自己"输入端和输出端分别缺哪个工具类",缺什么补什么,脚本层几乎零成本复用——这就是这套 5 脚本 + 4 工具类结构对二次开发最友好的地方。
【免费下载链接】Localizable.strings2ExcelPython command line tool for conversion between iOS strings files and excel files & between android strings.xml files and excl files. & strings files to android strings.xml files.项目地址: https://gitcode.com/gh_mirrors/lo/Localizable.strings2Excel
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考