How about
NSLocalizedStringWithDefaultValue(@"some-string",
@"additionalStringsTableName",
[NSBundle mainBundle],
NSLocalizedString(@"some-string", nil),
nil);
Perform a lookup in your overriding strings file. If that fails, return the default NSLocalizedString()
result.
It's a rather ugly thing to have all over your code. So you might want to work some macro magic to get a shorter call. Something like this:
#define MyLocalizedString(key, comment) NSLocalizedStringWithDefaultValue(key,
OVERRIDE_TABLE_NAME,
[NSBundle mainBundle],
NSLocalizedString(key, comment),
comment);
(written on multiple lines for clarity). Then you could define OVERRIDE_TABLE_NAME
as a compiler option.