0
我建立这样的NSLocalizedString宏在我Prefix.pch:宏NSLocalizedString不工作
#undef NSLocalizedString
#define NSLocalizedString(key,_comment) [[LocalizedText sharedInstance] localizedStringFor:key]
我LocalizedText
类看起来是这样的:
+ (LocalizedText *)sharedInstance {
@synchronized(self)
{
if (_singletonInstance == nil)
_singletonInstance = [[LocalizedText alloc] init];
}
return _singletonInstance;
}
- (NSString *) localizedStringFor:(NSString*) key
{
NSUserDefaults *deviceLanguage = [NSUserDefaults standardUserDefaults];
NSString *currentLanguage = [deviceLanguage objectForKey:@"deviceLanguage"];
NSString *path;
if([currentLanguage isEqual: @"en"])
path = [[NSBundle mainBundle] pathForResource:@"en" ofType:@"lproj"];
else if([currentLanguage isEqual: @"de"])
path = [[NSBundle mainBundle] pathForResource:@"de" ofType:@"lproj"];
else if([currentLanguage isEqual: @"it"])
path = [[NSBundle mainBundle] pathForResource:@"it" ofType:@"lproj"];
NSBundle* languageBundle = [NSBundle bundleWithPath:path];
NSString* str=[languageBundle localizedStringForKey:key value:@"" table:nil];
return str;
}
因此,例如,当我改变我的NSUserDefaults
到@"en"
,我预计每NSLocalizedString
给我正确的英文翻译,但它永远不会改变,并且始终是默认语言。我的代码有什么问题?
感谢您的帮助,它似乎是“[[LocalizedText sharedInstance] localizedStringFor:关键]”完美的作品,但是当我尝试使用宏函数没有被调用,所以它似乎是marco它自身的一个问题。 – Davis
这很奇怪!我尝试了同样的方式,并且_does_工作。请参阅最新的答案。 – Ramon