У меня есть метод, который я установил NSUserDefaults для воспроизведения песни на основе английской версии. В настоящее время я переводю все это на другие языки, но поскольку будильник основан на объекте NSUserDefaults. Это должно сделать больше смысла:Получить английскую версию локализованной строки
- (void)applySoundNameAndSaveSoundToNSUserDefaults {
[self.audioPlayer stop];
NSString *soundName = self.soundNameLabel.text;
[[NSUserDefaults standardUserDefaults] setObject:soundName forKey:@"AlarmSound"];
}
Так как вы можете увидеть, если метка клетки локализована, она поставит языковую версию этого имени в NSUserDefaults, если я сделать это таким образом, что я не хочу к.
Это, как я играю:
self.alarmSound = [[NSUserDefaults standardUserDefaults] stringForKey:@"AlarmSound"];
- (void) fireLocalNotification {
NSString *notificationSound;
notificationSound = [NSString stringWithFormat:@"%@", self.alarmSound];
notificationSound = [notificationSound stringByAppendingString:@".caf"];
UILocalNotification *localNotification = [[UILocalNotification alloc] init];
localNotification.soundName = [NSString stringWithFormat:@"%@", notificationSound];
}
This обладают проблемой, потому что мой файл sound.caf в главном расслоении называется в английском формате. Итак, как мне получить английскую версию «self.soundNameLabel.text», когда она локализована?
EDIT Я нашел это в документации: initWithFormat:locale:
это именно то, что я ищу. Но я читал, что он не автореализован, поэтому я не знаю, нужно ли это использовать. Кроме того, я получаю ошибки для что-то вроде «строка не символьная строка» при использовании его
Вы делаете это неправильно. Просто не устанавливайте поведение программы в строках, отображаемых пользователю. Я уверен, что вы можете сохранить необходимую информацию в лучшей форме, чем локализованные тексты. – Sulthan