2012-05-17 16 views
11

¿Es esto verdad? Cuando se instancia un UIAlertButton, tiene que pasar un título explícito para el botón Cancelar, así:¿Utiliza traducciones estándar de Apple para el botón Alerta?

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

Eso significa que si quieres una aplicación localizada (que por supuesto que sí), usted tiene que localizar la cadena Cancelar también, aunque Apple obviamente ya recibió una traducción canónica. ¿Realmente me veo obligado a escribir algo como esto para manejarlo (o esto está bien?)

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

Esto se ve horrible para mí, pero la idea de que tengo que mantener mis propias traducciones de palabras ordenadas por HIG de Apple (como "Cancelar" o "OK") parece igualmente absurdo.

+0

Eso es genial, incluso si es un poco feo. No tenía idea de que pudieras hackear las cadenas localizadas de UIKit. – CodaFi

+0

Buenas respuestas para esta pregunta: [1] (http://stackoverflow.com/q/6909885/3050403), [2] (http://stackoverflow.com/a/6468992/3050403). Mejor que el aceptado. – kelin

Respuesta

5

Como esperaba, no es recomendable ya que su código introduce una dependencia no documentada y no compatible que podría dañar su aplicación si aparece una actualización futura de iOS que cambia la forma en que Apple localiza su UIButton (no muy probable, pero quién sabe).

Realmente, "OK" y "Cancelar" no son cosas difíciles de traducir. Si no desea que un traductor lo vuelva a localizar como parte del trabajo de localización de su aplicación, puede recuperarlo usted mismo desde iOS (utilizando su código) y copiar la traducción en su archivo .strings, para que tenga ¡una copia confiable de la traducción a partir de ahora!

Cuestiones relacionadas