NSLocalizedString с переменной swift
Я пытаюсь локализовать свое приложение с помощью NSLocalizedString. Когда я импортирую файл XLIFF, большинство работает как шарм, но что-то не так и некоторые строки не локализован. Я заметил, что проблема заключается в том, что NSLocalizedString содержит что-то переменное внутри, например:
NSLocalizedString(" - (count) Notifica", comment: "sottotitolo prescrizione per le notifiche al singolare")
или
NSLocalizedString("Notifica per (medicina!) della prescrizione (prescription!)nMemo: (memoTextView.text)", comment: "Messaggio della Local Notification")
может быть, это не правильный синтаксис для такого рода вещей. Кто-то может объяснить мне, как это сделать в Swift? Большое спасибо.
4 ответа:
можно использовать
sprintf
параметры формата в пределахNSLocalizedString
, Так что ваш пример может выглядеть так:let myString = String(format: NSLocalizedString(" - %d Notifica", comment: "sottotitolo prescrizione per le notifiche al singolare"), count)
в сеансе #412 WWDC2014 "локализация с помощью Xcode 6" правильный путь к этому в Swift заключается в следующем:
String.localizedStringWithFormat( NSLocalizedString(" - %d Notifica", comment: "sottotitolo prescrizione per le notifiche al singolare"), count)
я следовал подходу создания расширения для строки, поскольку у меня есть много строк для локализации.
extension String { var localized: String { return NSLocalizedString(self, comment:"") } }
использовать его для локализации в код:
self.descriptionView.text = "Description".localized
для строк с динамическими переменными выполните следующие действия:
self.entryTimeLabel.text = "\("Doors-open-at".localized) \(event.eventStartTime)"
объявить строки в строковых файлах для разных языков (например : арабский и английский)
надеюсь будет помогать!
Я создал
extension
доString
так как у меня было многоstrings
наlocalized
.extension String { var localized: String { return NSLocalizedString(self, tableName: nil, bundle: Bundle.main, value: "", comment: "") } }
например:
let myValue = 10 let anotherValue = "another value" let localizedStr = "This string is localized: \(myValue) \(anotherValue)".localized print(localizedStr)