NSLocalizedString(ключ: значение: комментарий:) с переменной не работает в swift
Мне нужно локализовать строку, которая имеет некоторую переменную, и локализованная строка должна быть определена в формате ключ: значение: комментарий. Ребята, я пробовал много способов, но пока не получил правильный путь. Посмотреть здесь...
let timeValue = 5
let timeString = "hours"
//Bellows are working fine
dateLabelString = String(format: "Overdue by %d %@", timeValue,timeString) //Working //Normal flat string
dateLabelString = String(format: NSLocalizedString("Overdue by %d %@", comment: "Overdue by 5 days/hours/minutes/seconds"), timeValue,timeString) //Working
dateLabelString = String.localizedStringWithFormat(NSLocalizedString("Overdue by %d %@", comment: "Overdue by 5 days/hours/minutes/seconds"), timeValue,timeString) //Working
dateLabelString = NSString.init(format: "Overdue by %d %@", timeValue,timeString) as String //Working
dateLabelString = NSString.init(format: NSLocalizedString("Overdue by %d %@", comment: "Overdue by 5 days/hours/minutes/seconds"), timeValue,timeString) as String //Working
//Bellows are not working
dateLabelString = String(format: NSLocalizedString("OVERDUE_BY", value: "Overdue by %d %@", comment: "Overdue by 5 days/hours/minutes/seconds"), timeValue,timeString) //Not Working
dateLabelString = String.localizedStringWithFormat(NSLocalizedString("OVERDUE_BY", value: "Overdue by %d %@", comment: "Overdue by 5 days/hours/minutes/seconds"), timeValue,timeString) //Not Working
dateLabelString = NSString.init(format: NSLocalizedString("OVERDUE_BY", value: "Overdue by %d %@", comment: "Overdue by 5 days/hours/minutes/seconds"), timeValue,timeString) as String //Not Working
Xcode: 8.2.1 Swift: 2.3
Обратите внимание, что проблема заключается в включении ключа в NSLocalizedString, в противном случае он работает отлично. Мне нужен ключ должен.
1 ответ
Решение
Для локализованных строк с переменными это работает для меня:
String.localizedStringWithFormat(NSLocalizedString("MyCustomKey", comment: "Hello %d World"), myValue)
И в Localizable.strings
эта строка:
MyCustomKey = "Hello %d World";