С момента последнего обновления я не могу перевести языковой код (en, fr и т. Д.) В их соответствующие имена (английский, французский и т. Д.).
Он работает на реальном устройстве, но не в эмуляторе. Он работал с использованием предыдущих версий Xcode. Я знаю, что в примечаниях к выпуску написано, что [NSLocale currentLocale]
может возвращать en_US
в некоторых ситуациях, но это не объясняет, почему они больше не "переведены". Я использую этот код:
NSString* lang = @"en";
NSLog(@"%@",
[[NSLocale currentLocale]
displayNameForKey:NSLocaleIdentifier
value:lang]
);
который отображает (null)
вместо English
.
Проблема в том, что мое приложение в некоторых местах вылетает из-за этого, поэтому я хотел бы знать, есть ли обходной путь.
Странно то, что следующий пример, приведенный Apple, действительно хорошо работает.
NSLocale *frLocale = [[NSLocale alloc] initWithLocaleIdentifier:@"fr_FR"];
NSString *displayNameString = [frLocale displayNameForKey:NSLocaleIdentifier value:@"fr_FR"];
NSLog(@"displayNameString fr_FR: %@", displayNameString);
displayNameString = [frLocale displayNameForKey:NSLocaleIdentifier value:@"en_US"];
NSLog(@"displayNameString en_US: %@", displayNameString);