APP 国际化是一个头疼的问题,经常会做大量重复性工作,人工操作,还会造成文案更新不及时的问题,本方案就来解决国际化文案的痛点。
https://github.com/Tliens/Localizable
本方案特点:
- 支持iOS、Android
- 节省时间(文案交给产品自己整理去吧)
- 组件化、模块内的国际化
- 资源分类,我参考了:https://github.com/mac-cain13/R.swift 整理出一个国际化的资源文件
- 常规项目的国际化(推荐:Stringz)
Stringz 缺点:
- 1.对组件化工程不友好;
- 2.仅支持Xcode apps
- 优点: 有比较棒的 Mac版App ,可以满足iOS端的需求,非技术人员也可使用
node iOS_Localizable.js
Language.shared.switch(.en)
lb.text = R.string("login_name_placeholder")
具体查看Demo。
iOS的国际化通过不同语言的配置文件管理:如
- en.lproj/Localizable.strings
- zh-Hant.lproj/Localizable.strings
注意: 记得发布到网络
把Demo中的 localize
、iOS_Localizable.js
放到项目同级目录
修改iOS_Localizable.js
文件
var Localize = require("./localize/index.js");
var transformer = Localize.fromGoogleSpreadsheet("1P-Ncuz1iAcrPU6UzwDl44wiDm8mjUxo18m7lbjIDDLs", '*');
transformer.setKeyCol('KEY');
transformer.save("LocalString/en.lproj/Localizable.strings", { valueCol: "EN", format: "ios" });
transformer.save("LocalString/ja.lproj/Localizable.strings", { valueCol: "JA", format: "ios" });
transformer.save("LocalString/zh-Hans.lproj/Localizable.strings", { valueCol: "CN", format: "ios" });
- "1P-Ncuz1iAcrPU6UzwDl44wiDm8mjUxo18m7lbjIDDLs" 为spreadsheets的名称
- "LocalString/xx.lproj/Localizable.strings" 为保存的路径
运行
node iOS_Localizable.js
公众号:独立开发者基地