Swift: Internacionalización de Strings

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:

  1. Va encontra de los principios de  Clean Code
  2. 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.

 

Sofia Swidarowicz

I'm an iOS Software Engineer mostly. Known as phynet in the internez. I'm me, full of memory failure and lovely karma.

 

Leave a Reply

Your email address will not be published. Required fields are marked *