2012-05-17 14 views
11

Czy to prawda? Kiedy instancji UIAlertButton, trzeba zdać mu wyraźny tytuł przycisk Anuluj tak:Używanie standardowych tłumaczeń Apple dla przycisku Alert?

UIAlertView *av = 
    [[UIAlertView alloc] 
     initWithTitle:@"Error" 
     message:err.localizedDescription 
     delegate:nil 
     cancelButtonTitle:@"Cancel" 
     otherButtonTitles:nil]; 

Oznacza to, że jeśli chcesz zlokalizowaną aplikację (co oczywiście zrobić), trzeba zlokalizować również ciąg Anuluj, mimo że Apple ma już oczywiście już tłumaczenie kanoniczne. Czy naprawdę muszę napisać coś takiego, żeby sobie z tym poradzić (czy jest to nawet w porządku)?

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]; 

Wygląda to straszne dla mnie, ale pomysł, że muszę zachować własne tłumaczenia słów upoważnione przez HIG Apple (jak „Anuluj” lub „OK”) wydaje się równie absurdalne.

+0

To jest świetne, nawet jeśli jest trochę brzydkie. Nie miałem pojęcia, że ​​możesz zhackować zlokalizowane łańcuchy UIKit. – CodaFi

+0

Dobre odpowiedzi na to pytanie: [1] (http://stackoverflow.com/q/6909885/3050403), [2] (http://stackoverflow.com/a/6468992/3050403). Lepiej niż zaakceptowany. – kelin

Odpowiedz

5

Zgodnie z oczekiwaniami nie jest to zalecane, ponieważ kod wprowadza nieudokumentowaną, nieobsługiwaną zależność, która może uszkodzić twoją aplikację, jeśli pojawią się przyszłe aktualizacje systemu iOS, które zmieniają sposób lokalizacji Uibutton przez Apple (mało prawdopodobne, ale kto wie).

Naprawdę, "OK" i "Anuluj" nie są trudne do przetłumaczenia. Jeśli nie chcesz, aby tłumacz wykonał te czynności w ramach pracy nad lokalizacją twojej aplikacji, możesz je odzyskać samodzielnie z iOS (używając swojego kodu) i skopiować tłumaczenie do pliku .strings, abyś miał rzetelna kopia tłumaczenia od teraz!

Powiązane problemy