UnifiedForumUI是一个CocoaPod的类库,在开发的时候,他位于Development Pods这个位置,当我们需要为他添加多语言配置的时候,需要注意他所在的PROJECT和Target
第一步:为PROJECT-Pods添加需要Localization的语言
点击左侧导航栏的Pods,找到PROJECT-Pods,在Info选项页中找到Localizations,点击下面的+号按钮,添加需要Localization的语言。(例如下图中,我们添加了Chinese, Simplified)
第二步:在Development Pods中添加Strings文件
点击菜单File-New-File,选择Strings File
取名为“UnifiedForumUI”,注意选择Target,这里我们需要选择的是“UnifiedForumUI”,以及存放的目录,为Assets目录
第三步:对UnifiedForumUI进行Localization
选中UnifiedForumUI文件,点击Xcode右侧Inspectors栏Localize...选项,选择需要本地化的语言,这里我们先选English。
确认之后,原先的Localize...选项会变成一个Check Box List,包含了English,以及Chinese, Simplified,此时再把Chinese, Simplified勾选即可
第四步:配置UnifiedForumUI.podspec
多语言配置文件是以资源文件的形式,做成resource bundle打包进库的,因此我们在podspec文件中指定resource bundle的名字,以及资源文件所在的目录.
在UnifiedForumUI.podspec添加如下代码:
s.resource_bundles = {
'UnifiedForumUI' => ['UnifiedForumUI/Assets/*']
}
UnifiedForumUI是指bundle的名字,UnifiedForumUI/Assets/*指明了需要打包的资源的内容。注意,在第二步中,我们将多语言配置文件存放在了Assets目录下。
第五步:如何Localization
苹果提供了NSLocalizedStringFromTableInBundle(key, tbl, bundle, comment)宏,因此我们需要关心的就是如何设置参数即可。
- key:即需要Localize的字符串Key,这个我们需要在UnifiedForumUI.strings文件中进行定义。
- tbl:我们取名为UnifiedForumUI.strings,因此tbl的值为“UnifiedForumUI”
- bundle: 我们不能直接使用[NSBundle mainBundle]来获取bundle,我们需要获取我们自己创建的CocodPod库内的bundle。
- comment: 任意
第六步:如何获取CocodPod库内的bundle
我们创建下面一个类,来获取我们需要的bundle
@interface UFUIBundle : NSObject
+ (NSBundle *)resourceBundle;
@end
@implementation UFUIBundle
+ (NSBundle *)resourceBundle {
NSString *bundlePath = [[NSBundle bundleForClass:[self class]].resourcePath
stringByAppendingPathComponent:@"/UnifiedForumUI.bundle"];
return [NSBundle bundleWithPath:bundlePath];
}
@end
第七步: 最终的宏
#define KUFUILocalization(key) NSLocalizedStringFromTableInBundle(key, @"UnifiedForumUI", [UFUIBundle resourceBundle], nil)