如何为自制的CocoaPod库配置多语言环境

UnifiedForumUI是一个CocoaPod的类库,在开发的时候,他位于Development Pods这个位置,当我们需要为他添加多语言配置的时候,需要注意他所在的PROJECT和Target

第一步:为PROJECT-Pods添加需要Localization的语言

点击左侧导航栏的Pods,找到PROJECT-Pods,在Info选项页中找到Localizations,点击下面的+号按钮,添加需要Localization的语言。(例如下图中,我们添加了Chinese, Simplified)

截屏2022-11-10 10.03.19.png
第二步:在Development Pods中添加Strings文件

点击菜单File-New-File,选择Strings File


截屏2022-11-10 10.09.04.png

取名为“UnifiedForumUI”,注意选择Target,这里我们需要选择的是“UnifiedForumUI”,以及存放的目录,为Assets目录

截屏2022-11-10 10.18.56.png
第三步:对UnifiedForumUI进行Localization

选中UnifiedForumUI文件,点击Xcode右侧Inspectors栏Localize...选项,选择需要本地化的语言,这里我们先选English。

截屏2022-11-10 10.36.02.png

确认之后,原先的Localize...选项会变成一个Check Box List,包含了English,以及Chinese, Simplified,此时再把Chinese, Simplified勾选即可

截屏2022-11-10 10.38.49.png
第四步:配置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)

你可能感兴趣的:(如何为自制的CocoaPod库配置多语言环境)