如果你企图在framework
中直接使用NSLocalizedString
完成本土化,你应该会失败,因为查看一下NSLocalizedString
的定义
#define NSLocalizedString(key, comment) \
[NSBundle.mainBundle localizedStringForKey:(key) value:@"" table:nil]
它调用的对象是NSBundle.mainBundle
,很明显是行不通的,解决办法是自定义宏,像下面这样
#define LOCALIZE(arg) [[NSBundle bundleForClass:[self class]] localizedStringForKey:(arg) value:@"" table:nil]
#define LOCALIZE_FORMAT(format,arg,...) [NSString stringWithFormat:LOCALIZE(format),arg]
使用起来很简单
LOCALIZE(@"classNameIsEmpty")
LOCALIZE_FORMAT(@"formatClassNotFound",intent.className)