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