问题:我们开发iOS,在撸多语言国际化代码的时候,为啥获得的心流会更少呢?
原因是我们在写国际化代码时候,创建key的工作太繁琐了,要频繁来回切换不同的文件,消耗着我们的注意力,根本没法愉快的撸代码,所以很难获得心流快感。
解决
其实这些繁琐又机械化的事情就应该交给脚本来着,我们就只要专心写我们代码的逻辑就好了。那好,我们来写一个脚本应用:Localize-Key
这个脚本在OC项目生成使用的静态字符串,如:
/// 马上邀请的按钮文案
static NSString * const LocalizeKey_invite_buttonTitle = @"invite_buttonTitle";
在swift项目会生成enum枚举,还有子枚举,如:
/**#LocalizeKey*/
enum LocalizeKey: String {
/*#keys-Localize*/
/// Invalid key. Never use
case invalidKey = "invalidKey"
case buttonTitle = "buttonTitle"
case toolbarTitle1 = "toolbarTitle1"
//case toolbarTitle2 = "toolbarTitle2"
//case toolbarTitle3 = "toolbarTitle3"
case toolbarTitle4 = "toolbarTitle4"
case haha = "haha"
/*#end-keys-Localize*/
/**#home*/
enum home: String {
/*#keys-home*/
case title = "home_title"
//case titleLabel = "home_titleLabel"
case wow = "home_wow"
/*#end-keys-home*/
/*#end-home*/
}
使用
//OC中的使用
NSString * str = NSLocalizedStringFromTable(LocalizeKey_invite_buttonTitle, @"demo", nil);
//在swift中的的使用
let str = NSLocalizedString(LocalizeKey.home.title.rawValue, tableName: "Home", comment: "")
//这里只是简单的介绍使用而已,当然你们可以自行扩展或使用三方的库
安装
在项目里https://github.com/CoconutGZ/Localize-Key有个安装包Localize Key.dmg
下载回来安装到电脑上。
说说这个界面:
- string file:就是国际化资源.strings文件的路径.
- output file:是要生成key的路径,是.h或.swift文件。也可不填,不填会自动在项目里生成的,如果项目里没有生成过建议不用填。
- subset:子集,可以用来对key进行分类,方便管理和使用。
- language:输出的语言。如果填写了output file这里会自动选上的。
- key:就是编程时候方便使用的key。不一定是strings文件上的key哦,程序内部可能会转换的,不过我们可以不用管转换的。
- value:就是strings文件里的要显示的字符串。
- remark:提示的注释,写代码的时候有提示的。
- checkout:就是从.strings文件里导出生成.h或.swift文件上的key。当你更改了.strings文件后也可以使用这个功能进行同步。比如你在。string文件上注释掉了某个键值对,同步后输出的文件也会相应的注释掉。
- insert:新增一个key,同时会添加到.strings文件 和 输出的文件。
使用
1、如果项目的.strings文件已经有些键值对也里面了(也就是不是新建的),那我们可以使用checkout导出同步功能,先把已经存在的键值对生成方便我们使用的key。下面的是使用的例子:
- 打开我们的项目,也打开Localize-Key。
20181224-184221.png
20181224-194710.png
MG15.png
MG16.png
20181224-200134.png
20181224-200802.png
MG17.png
20181224-201546.png
MG19.png
2、接下来,我们演示一下增加新的key。还是用这个项目。
20181224-202642.png
MG20.png
20181224-203044.png
MG21.png
3、subset的分类功能。
20181224-203757.png
MG22.png
20181224-204317.png
二、在swift里的使用:
1、在swift里的使用和oc流程的一样的,就是在选择语言上选择swift而已。
20181224-205155.png
20181224-205025.png
20181224-210059.png
20181224-210712.png
网友评论