news 2026/9/11 13:51:19

如何为Localizable.strings2Excel快速新增转换功能?5脚本+4工具类的代码架构开发指南

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
如何为Localizable.strings2Excel快速新增转换功能?5脚本+4工具类的代码架构开发指南

如何为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 → Excelpython/Strings2Xls.py把 iOS 多语言 strings 汇总给翻译团队
Excel → stringspython/Xls2Strings.py翻译完成后回填 iOS 工程
strings.xml → Excelpython/Xml2Xls.py把 Android 文案导出成表格
Excel → strings.xmlpython/Xls2Xml.py翻译回填 Android 工程
strings → strings.xmlpython/Strings2Xml.pyiOS 项目直接迁移到 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/ 目录,可以分成两层:

工具类层(被复用的核心)

工具类文件职责
StringsFileUtilpython/StringsFileUtil.py读写 iOS strings 文件,含注释剥离、编码容错
XmlFileUtilpython/XmlFileUtil.py读写 Android strings.xml,自动处理占位符格式
XlsFileUtilpython/XlsFileUtil.py封装 xlrd 读取 Excel 工作表
Logpython/Log.py彩色日志输出

工具类只暴露最小组合:getKeysAndValues(path)读入、writeToFile(keys, values, dir, name, additional)写出。无论哪个脚本、哪个转换方向,数据在内存中都统一流转为(keys, values)两个列表,这就是新增功能时最大的复用点。

脚本层(每个转换方向一个入口)

5 个脚本共享同一套"三段式"骨架,以Strings2Xls.py为例:

  1. addParser()—— 用optparse.OptionParser定义命令行参数,如-f源目录、-t目标目录、-eExcel 存储形式
  2. startConvert(options)—— 参数校验后,遍历目录,调用工具类完成实际转换,输出带时间戳的结果目录
  3. main()—— 串联前两步并执行

新增脚本时照抄骨架,只替换中间的工具类调用即可。

🚀 三步新增一个转换功能(如 Excel → properties)

第一步:确定输入输出,选对工具类

转换的输入端用读取类,输出端用写出类。本例输入是 Excel,复用XlsFileUtil.getAllTables()拿到 sheet 数据(参考Xls2Strings.pyconvertFromMultipleForm的遍历方式);输出 properties 文件没有现成写出方法,可仿照StringsFileUtil.writeToFile新增一个PropertiesFileUtil类。

第二步:新建脚本,复用三段式骨架

新建python/Xls2Properties.py,照抄python/Xls2Strings.pyaddParser()/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,依赖pyExceleratorxlrd两个库:

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),仅供参考

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/9/2 5:45:47

社保大数据竞赛实战:Python与LightGBM全流程

简介&#xff1a;在大数据时代&#xff0c;机器学习技术广泛用于政务数据挖掘&#xff0c;其中基于梯度提升树的LightGBM以高效训练和类别特征支持成为表格数据建模的主流。真实业务场景中的数据往往体量大、维度杂&#xff0c;且存在严重类别不平衡&#xff0c;如何通过特征工…

作者头像 李华
网站建设 2026/8/30 13:13:56

基于RAG的408考研本地化问答系统:从架构到调优实践

简介&#xff1a;检索增强生成&#xff08;RAG&#xff09;是一种将外部知识库与生成式大模型结合的框架&#xff0c;通过先检索再生成的方式显著提升回答的准确性与可溯源性。其核心原理是把文档切块、向量化存入数据库&#xff0c;在提问时召回相关片段并交由模型组织答案。R…

作者头像 李华
网站建设 2026/8/30 7:22:32

具身智能落地指南:从Demo到生产线的关键跨越与工程实践

一场技术路演上&#xff0c;具身智能机器人轻巧地完成叠衣、拧瓶盖、抓取零件&#xff0c;观众席一再响起掌声。但是当镜头切回真实的汽车工厂、物流仓库或者电子装配车间&#xff0c;情况往往完全不同&#xff1a;来料位置是乱的&#xff0c;光线是变的&#xff0c;节拍是按秒…

作者头像 李华
网站建设 2026/8/30 5:05:18

钉钉千问办公:个人版与企业版的区别及收费标准详解

1. 引言 随着 AI 办公工具的普及&#xff0c;钉钉也推出了自己的 AI 助手——钉钉千问办公。很多用户在初次接触时都会困惑&#xff1a;个人版和企业版到底有什么区别&#xff1f;收费又是怎样的&#xff1f;本文将从功能、适用场景和收费标准三个维度&#xff0c;为你详细拆解…

作者头像 李华