编辑
如果你的iOS项目使用了framework,并且希望在framework中使用本土化语言文件,那么你应该注意这篇文章说的。
本文访问次数:0

如果你企图在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)
  • 宗仁 2016/11/17 回复 编辑 删除

    关于宏的格式,如果是变量,应该使用大写下划线式,如果是方法,应该使用首字母大写的驼峰式。