Использование стандартных переводов Apple для кнопки Alert?
Это правда? Когда вы создаете экземпляр UIAlertButton, вы должны передать ему явное название кнопки "Отмена" , например:
UIAlertView *av =
[[UIAlertView alloc]
initWithTitle:@"Error"
message:err.localizedDescription
delegate:nil
cancelButtonTitle:@"Cancel"
otherButtonTitles:nil];
Это означает, что если вы хотите локализованное приложение (которое, конечно же, вы это делаете), вы также должны локализовать строку "Отмена" , хотя Apple, очевидно, уже получила канонический перевод. Я действительно вынужден написать что-то вроде этого, чтобы справиться с этим (или это даже нормально)?
NSBundle* uikitBundle = [NSBundle bundleForClass:[UIButton class]];
UIAlertView *av =
[[UIAlertView alloc]
initWithTitle:NSLocalizedString(@"Error", @"Title for Alert box when error occurs")
message:err.localizedDescription
delegate:nil
cancelButtonTitle:NSLocalizedStringFromTableInBundle(@"Cancel", @"Localizable", uikitBundle, nil)
otherButtonTitles:nil];
Это выглядит ужасно для меня, но идея о том, что я должен поддерживать собственные переводы слов, заданных Apple HIG (например, "Отмена" или "ОК" ), кажется столь же абсурдной.
Ответы
Ответ 1
Как вы ожидаете, это не рекомендуется, так как ваш код вводит недокументированную неподдерживаемую зависимость, которая может разорвать ваше приложение, если появится будущее iOS-обновление, которое изменит, как Apple локализует свой UIButton (не очень вероятно, но кто знает).
Действительно, "ОК" и "Отмена" не сложно переделать. Если вы не хотите, чтобы переводчик повторно локализовал их для вас как часть вашей работы по локализации приложения, вы можете извлечь их из iOS (используя свой код) и скопировать перевод в свой .strings
файл, Теперь у вас будет надежная копия перевода!