iOS 本地化 - 包括插件的本地化
基础配置
- PROJECT - Localizations - language - 添加需要的本地化语言
- 使用 storyboard&xib,必须
Use Base Internationalization

本地化有
Base和具体语言可以选择
Base就是通用语言,没有本地化处理的就用Base
Base<=English,当设置English本地化时,Base就被English取代
- 默认项目文件应该存在
Base.lproj文件夹,存放Base本地资源 - 每新增一个本地化语言,都会多一个相关的文件夹,存放本地资源,比如
zh-Hans.lproj为简体中文

APP 名称本地化
- 即对
info.plist做本地化处理 info.plist作为plist文件,本身可以直接添加本地化处理,但是作为系统级别的不能直接处理- 对应的措施是,添加
InfoPlist.string作为过渡,此文件可以本地化处理,属性中添加Localization

InfoPlist.string会生成多个本地化文件,对应各个语言info.plist可以Open As-Source Code,查看很多的Key,比如CFBundleDisplayName是 APP 显示名称- 编辑
InfoPlist.string,key-value 的形式,不同语言编辑不同文本即可

Info.plist 本身文件,猜测就是 English 语言的,所有设置 Base 并不会生效
项目内文本本地化
- 新建
Localizable.string,操作与InfoPlist.string一致,key-value 形式编辑 - 项目中使用,
NSLocalizedString(key, commom),类似的宏定义还有 3 个,具体可以参考NSBundle.h内的 API
self.testLabel.text = NSLocalizedString(@"test", nil);
- 如果项目比较大,也可以自定义个
string文件,比如Test.string
self.myLabel.text = NSLocalizedStringFromTable(@"my-test", @"Test", nil);
storyboard 本地化
- 同理,storyboard 也可以设置本地化文件,自带可视化即为 Base,添加的同样已
.string文件形式 - 较为坑爹的是,如果不是已拉线的方式拖出控件,并用代码的方式本地化的话,必须在每个 storyboard 的本地化文件中修改,且每次修改 storyboard,对应的 string 文件不会修改,还得删掉重新生成,重新生成那么原来的本地化配置又得重新弄,很不舒服
- storyboard 还是建议拉线处理吧,不然太坑了
今日插件名称本地化
- 一开始忽略了项目文件结构,导致插件的本地化不好处理
- 针对插件 TARGET,同理创建
InfoPlist.string和Localizable.string即可; - 注意创建时的目录结构即可,每个 TARGET 对应一套本地化资源(第一次尝试时,搞在项目目录导致异常,现在理一理一下子竟然清晰了)