localizeWithFormat and variadic arguments in Swift

前端 未结 3 795
甜味超标
甜味超标 2020-12-11 23:56

I am trying to create a String extension to do something like that

\"My name is %@. I am %d years old\".localizeWithFormat(\"John\", 30)

w

3条回答
  •  醉梦人生
    2020-12-12 00:19

    This should be pretty simple just change your parameters as follow:

    extension String {
        func localizeWithFormat(name:String,age:Int, comment:String = "") -> String {
            return String.localizedStringWithFormat( NSLocalizedString(self, comment: comment), name, age)
        }
    }
    
    "My name is %@. I am %d years old".localizeWithFormat("John", age: 30)  // "My name is John. I am 30 years old"
    

    init(format:locale:arguments:)

    extension String {
        func localizeWithFormat(args: CVarArgType...) -> String {
            return String(format: self, locale: nil, arguments: args)
        }
        func localizeWithFormat(local:NSLocale?, args: CVarArgType...) -> String {
            return String(format: self, locale: local, arguments: args)
        }
    }
    let myTest1 = "My name is %@. I am %d years old".localizeWithFormat(NSLocale.currentLocale(), args: "John",30)
    let myTest2 = "My name is %@. I am %d years old".localizeWithFormat("John",30)
    

提交回复
热议问题