Ios Xcode单元测试Can';找不到可本地化的.strings

Ios Xcode单元测试Can';找不到可本地化的.strings,ios,objective-c,xcode,unit-testing,localization,Ios,Objective C,Xcode,Unit Testing,Localization,我正在尝试测试一个分层本地化结构,该结构首先在一个文件中搜索本地化,如果在第一个表中找不到,则默认为Localizable.strings 下面是执行此操作的代码: + (instancetype)sharedInstance { static LLLocalizationUtil *sharedLocalizationUtil = nil; static dispatch_once_t onceToken; dispatch_once(&onceToken,

我正在尝试测试一个分层本地化结构,该结构首先在一个文件中搜索本地化,如果在第一个表中找不到,则默认为Localizable.strings

下面是执行此操作的代码:

+ (instancetype)sharedInstance {
    static LLLocalizationUtil *sharedLocalizationUtil = nil;
    static dispatch_once_t onceToken; 

    dispatch_once(&onceToken, ^{
        sharedLocalizationUtil = [[self alloc] init];
    });

    return sharedLocalizationUtil;
}

- (LLLocalizationUtil *)init {
    self = [super init];
    if (self) {
        _bundle = [NSBundle bundleForClass:[self class]];
    }
    return self;
}

- (NSString *)locateString:(NSString *)key {

    NSString *locString =
        [self.bundle 
            localizedStringForKey:key
                            value:[self.bundle localizedStringForKey:key 
                                                               value:nil 
                                                               table:@"Localizable"]
                            table:@"Localizable_Specific"];

    return locString;

}
下面是试图测试它的单元测试:

SPEC_BEGIN(LocalizationUtil)

describe(@"We want a tool to support hierarchical localization", ^{
    __block NSFileManager *manager;
    __block LLLocalizationUtil *localUtil;

    beforeAll(^{
        localUtil = [LLLocalizationUtil sharedInstance];
        localUtil.bundle = [NSBundle bundleForClass:NSClassFromString(@"LLLocalizationUtilTests")];
    });
    context(@"with multiple localization files", ^{
        it(@"and one carrier", ^{
            NSString *attString = [localUtil locateString:@"button.text"];
            [[attString should] equal:@"Click me!"];

        });
    });
});
SPEC_END
我尝试了几种不同的方法来设置Bundle路径,但似乎都不起作用;显然,这一点也是错误的

我在Xcode项目中有Localizable.strings文件,尽我所能正常本地化:

Localizable.strings:

"some.key" = "some_value";
"button.title" = "wrong";
可本地化的_特定的.strings:

"button.title" = "Click me!";
"activity.title" = "Activity Window";

问题似乎是捆绑包找不到可本地化的_特定文件来执行查找,而且它似乎也忽略了Localizable.strings。测试返回原始键值,既没有“单击我”也没有“错误”。

通过仔细分析最愚蠢的事情解决了问题:当我想要“button.title”时,我正在寻找“button.text”


叹气。

我认为第一个明显的问题是,是否将字符串文件添加到了目标中?在复制包资源中?是的,本地化和本地化都是特定的。从理论上讲,bundleForClass:NSClassFromString代码应该会接受这一点,对吗?