2014-10-31 4 views
6

Я пытаюсь понять, как использовать NSLocalizedString с переменными.NSLocalizedString с переменными Swift

Например, если я хочу вывести «Питер и Ларри», в моем файле Localizable.strings, должен ли я иметь следующее?

"account.by_user" = "by %@ and %@"; 

Как бы назвать NSLocalizedString("account.by_user", comment: "") с, если есть 2 переменные name1 и name2 где name1 = Питер и name2 = Ларри?

ответ

10

да, вы должны иметь "account.by_user" = "by %@ and %@"; и принять это:

let myString = String(format: NSLocalizedString("account.by_user", comment: "any comment"), "Peter","Larry") 
7

Это еще один способ, и как я это делаю.

let myString = String.localizedStringWithFormat(NSLocalizedString("by %@ and %@", comment: "yourComment"), name1, name2) 

в основном, основная идея локализованную строку с форматом, как это:

let math = "Math" 
let science = "Science" 
String.localizedStringWithFormat(NSLocalizedString("I love %@ and %@", comment: "loved Subjects"), math, science) 
+0

'I love% @ и% @' является ключом строки, почему вы помещаете '% @' там ... – user25

+0

'% @' является заполнителем для любого значения (* constant math & science), которое не является переводится, но помещается после, следовательно, используется «String.localizedStringWithFormat». –

+0

https://stackoverflow.com/a/28067154/4548520 это выглядит более корректно для меня – user25

3

Добавление небольшого образца ниже, как это мне потребовалось некоторое время, чтобы сообразить файл форматирования Localizable.strings.

Пример добавления переменных локализованной строки:

В коде:

let myVar: String = "My Var" 

String(format: NSLocalizedString("translated_key %@", 
     comment: "Comment"), myVar) 

В Localizable.strings файле:

"translated_key %@" = "My var is: %@"; 

Конечно, в %@ на правой стороне могут быть заменены:

"translated_key %@" = "My var is: %@"; 
"translated_key %@" = "%@ is my var"; 
"translated_key %@" = "I use %@ as my var"; 

Также %@ может быть заменен на %d для int или %f для поплавка.

Смежные вопросы