带有变量Swift的NSLocalizedString

Dea*_*ean 15 ios swift

我试图弄清楚如何将NSLocalizedString与变量一起使用.

例如,如果我想输出"由Peter和Larry",在我的Localizable.strings文件中,我应该有以下内容吗?

"account.by_user" = "by %@ and %@";
Run Code Online (Sandbox Code Playgroud)

我怎么会叫NSLocalizedString("account.by_user", comment: "")用,如果有2个变量name1,并name2在那里name1=彼得和name2=拉里?

dua*_*uan 25

是的,你应该拥有"account.by_user" = "by %@ and %@";并采取这个:

let localizedString = NSLocalizedString("account.by_user", comment: "any comment")
let wantedString = String(format: localizedString, "Peter","Larry")
Run Code Online (Sandbox Code Playgroud)


r_1*_*_19 14

这是另一种方式,我是如何做到的.

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

基本上,具有格式的Localized String的主要思想是这样的:

let math = "Math"
let science = "Science"
String.localizedStringWithFormat(NSLocalizedString("I love %@ and %@", comment: "loved Subjects"), math, science)
Run Code Online (Sandbox Code Playgroud)


bau*_*sic 9

在下面添加一个小示例,因为我花了一些时间来确定 Localizable.strings 文件格式。

向本地化字符串添加变量的示例:

在代码中:

let myVar: String = "My Var"

String(format: NSLocalizedString("translated_key %@",
      comment: "Comment"), myVar)
Run Code Online (Sandbox Code Playgroud)

在 Localizable.strings 文件中:

"translated_key %@" = "My var is: %@";
Run Code Online (Sandbox Code Playgroud)

当然,%@右边的可以替换:

"translated_key %@" = "My var is: %@";
"translated_key %@" = "%@ is my var";
"translated_key %@" = "I use %@ as my var";
Run Code Online (Sandbox Code Playgroud)

此外,%@可以替换为%dfor int 或%ffor a float。


Eri*_*ock 7

Localizable.strings文件的示例:

在Localizable.strings文件中:

localizable_text = "Title %@ (Code: %@)";
Run Code Online (Sandbox Code Playgroud)

在Swift类中:

let title = "Error"
let code = "123456"
let alertMessage = String(format: NSLocalizedString("localizable_text", comment: ""), title, code)
Run Code Online (Sandbox Code Playgroud)