2014-10-31 19 views
6

Değişkenlerle NSLocalizedString'in nasıl kullanılacağını anlamaya çalışıyorum.Değişkenler ile NSLocalizedString Swift

Örneğin, "Peter ve Larry tarafından" çıktı vermek isterseniz, Localizable.strings dosyamda aşağıdakilere sahip olmam gerekir mi?

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

nasıl 2 değişkenler olup olmadığını ile NSLocalizedString("account.by_user", comment: "")name1 ve name2name1 = Peter ve name2 = Larry arayayım?

cevap

10

evet, "account.by_user" = "by %@ and %@"; var ve bu almalıdır:

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

Bu başka bir yoludur ve bunu nasıl.

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

temelde, formatı ile yerelleştirilmiş dize ana fikri şu şekildedir: bana Localizable.strings dosya biçimlendirme anlamaya biraz zaman aldı aşağıda küçük bir örnek ekleme

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

'% @ 'yi seviyorum% @ ve% @' dize anahtarıdır, neden '% @' yi buraya koydunuz ... – user25

+0

'% @ ', herhangi bir değerin (* sabit matematik ve bilim) yer tutucusudur. çevrilmek, ancak sonradan koymak 'String.localizedStringWithFormat' kullanımı. –

+0

https://stackoverflow.com/a/28067154/4548520 Bu benim için daha doğru görünüyor – user25

3

.

let myVar: String = "My Var" 

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

Localizable.strings dosyasında: Sağ tarafta

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

, %@ kodunda

: lokalize dizeye değişkenleri ekleyerek

Örnek aşağıdaki gibi değiştirilebilir:

Ayrıca, %@, int için %d veya bir float için %f ile değiştirilebilir.