How to use NSLocalizedString function with variables in Swift?

I'm trying to localize my app using NSLocalizedString. When I import the XLIFF file, most works like a charm but something do not and some string is not localized. I have noticed that the problem is from NSLocalizedString containing something variable inside like:

NSLocalizedString(" - \(count) Notifica", comment: "sottotitolo prescrizione per le notifiche al singolare")

or

NSLocalizedString("Notifica per \(medicina!) della prescrizione \(prescription!)\nMemo: \(memoTextView.text)", comment: "Messaggio della Local Notification")

Maybe this is not the correct syntax for this kind of stuff. Someone can explain me how to do that in Swift?


You can use the sprintf format parameters within NSLocalizedString, so your example can look like this:

let myString = String(format: NSLocalizedString(" - %d Notifica", comment: "sottotitolo prescrizione per le notifiche al singolare"), count)

In Session #412 of the WWDC2014 "Localizing with Xcode 6" the proper way to this in Swift is the following:

String.localizedStringWithFormat(
    NSLocalizedString(" - %d Notifica",
    comment: "sottotitolo prescrizione per le notifiche al singolare"),
    count)

I have followed the approach of creating extension to String as i have many strings to localize.

extension String {
    var localized: String {
        return NSLocalizedString(self, comment:"")
    }
}

To use it for localization in code do:

self.descriptionView.text = "Description".localized

For strings with dynamic variables follow :

self.entryTimeLabel.text = "\("Doors-open-at".localized) \(event.eventStartTime)"

Declare the strings in String files for different languages (example : Arabic and English)

enter image description here enter image description here

Hope will be helping!