NSLocalizedString与Swift中的变量

时间:2015-01-16 18:04:03

标签: ios swift nslocalizedstring

如何翻译包含变量的字符串,如下所示:

let alert = UIAlertController(title: NSLocalizedString("NEUEARTIKEL",comment:"Bitte gib einen neuen Artikel für \(titelArr[sender.tag]) an:"), message: nil, preferredStyle: .Alert)

当我在localizable.string中正常翻译String时这样:

NEUEARTIKEL="Add an item to \(titelArr[sender.tag]):";

警报将显示(titelArr [sender.tag])而不是其值。

这可能非常简单,但我是一个新手,很快就无法谷歌有用了! ; - )

感谢您的帮助 //的Seb

3 个答案:

答案 0 :(得分:6)

在localisable中,您无法直接设置自定义文本,只能使用文本和格式标记。因此,为了实现目标,您可以这样做:

NEUEARTIKEL="Add an item to %@:";

之后,使用NSString(format: <#NSString#>, <#args: CVarArgType#>...)

将您的标题格式化
let title = NSString(format: NSLocalizedString("NEUEARTIKEL", nil), titelArr[sender.tag])
let alert = UIAlertController(title: title, message: nil, preferredStyle: .Alert)

完成后,您的可本地化字符串将根据需要进行格式化。

答案 1 :(得分:6)

这是另一种方式以及我是如何做到的。

let NEUEARTIKEL = "Add an item to %@:"
let alert = UIAlertController(title: String.localizedStringWithFormat(NSLocalizedString(NEUEARTIKEL, comment: "Bitte gib einen neuen Artikel für \(titelArr[sender.tag]) an:"), titelArr[sender.tag]), message: nil, preferredStyle: .Alert)
基本上,具有格式的Localized String的主要思想是这样的:

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

答案 2 :(得分:1)

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

let title = String(format:
            NSLocalizedString("account.user_count", comment: ""),
                           users.count.description)

您可以找到要点here