I ran into the same problem. I though it would use the string from the development language strings file if it cannot find a localized string in the user's language, but apparently not.
I ended up creating my own function for getting a localized string.
@interface Localization : NSObject {
    NSBundle* fallbackBundle;
}
- (NSString*) localizedStringForKey:(NSString*)key;
@end
@implementation Localization
- (id)init {
    if (self = [super init]) {
        NSString *path = [[NSBundle mainBundle] pathForResource:@"en" ofType:@"lproj"];
        fallbackBundle = [[NSBundle bundleWithPath:path] retain];
    }
    return self;
}
- (void)dealloc {
    [fallbackBundle release];
    [super dealloc];
}
- (NSString*) localizedStringForKey:(NSString*)key {
    NSString* result = [[NSBundle mainBundle] localizedStringForKey:key value:@"!#€NOTFOUND%&/" table:nil];
    if (result == nil || [result isEqualToString:@"!#€NOTFOUND%&/"]) {
        result = [fallbackBundle localizedStringForKey:key value:nil table:nil];
    }
    if (result == nil) {
        result = key;
    }
    return result;
}
@end
You can make a singleton of this and have macros similar to NSLocalizedString that call localizedStringForKey, or something along those lines if you will.