
Estás escribiendo tu app, digamos que estás en tu zona ZEN, y por obvias razones quieres que sea adaptable a diferentes idiomas. Pero eso en cierta manera rompe el MOJO del ZEN, porque tienes que crear el fichero de internacionalización y comenzar a aplicar NSLocalizedString en TODO.
En mi caso, cuando estaba en ello me encontré repitiendo código, y todos sabemos que:
- Va encontra de los principios de
Clean Code - y qué pereza estar escribiendo lo mismo una y otra vez, lo que aplica a
DRY
Así que, me he creado una extension de un String en los que se puede evitar los puntos 1 y 2 al llamar solo a una propiedad localized en la cadena de texto que quiero internacionalizar. Amazing.
extension String {
var localized: String {
return String.localizedStringWithFormat(NSLocalizedString(self,comment: ""))
}
func localizedWithComment(comment:String) -> String {
return String.localizedStringWithFormat(NSLocalizedString(self,comment: comment))
}
}
Creando constantes y luego haciendo referencia a estos podemos usarlo donde querramos:
//Usamos constants let errortitle = "Este es mi mensaje de error".localized //Usando la constante especificada en el fichero localized.strings "errorMessage" = "Este es mi mensaje de error" let errortitle = "errorMessage".localized
Y ahora aplicamos esta lógica en un segmento de código, como el AlertController:
func showAlertError(){
var alertController = UIAlertController(title: errortitle,
message: errormessage,
preferredStyle: .Alert)
let cancelAction = UIAlertAction(title: cancel, style: .Cancel) {
(action) in
//blah blah tu código aquí
}
alertController.addAction(cancelAction)
presentViewController(alertController, animated: true, completion: nil)
}
Y ya está. Fácil y sencillo.
