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.