有没有一种简单的方法使用Swift将NSLocalizedStrings放入数组中?

3

我希望能够在 Swift 应用程序中将一个本地化字符串数组添加为集合视图的数据源。

我已经编写了以下代码:

let text = [NSLocalizedString("s0",comment: ""),NSLocalizedString("s1",comment: ""),NSLocalizedString("s2",comment: ""),NSLocalizedString("s3",comment: ""),NSLocalizedString("s4",comment: ""),NSLocalizedString("s5",comment: ""),NSLocalizedString("s6",comment: ""),NSLocalizedString("s7",comment: ""),NSLocalizedString("s8",comment: "")]

有没有更简单的方法来将数组中的所有字符串放置在一起,因为我有1000个本地化字符串,这看起来不太对。

3个回答

4

编写一个辅助函数来本地化数组

编辑:意识到您可以将此项任务分为两步而不是三步。简化了我的回答。

public func Localized(_ key: String) -> String {
    return NSLocalizedString(key, comment: "")
}

使用map调用

// for example
       let localized = ["s0", "s1", "s2"].map { Localized($0) }

1
你可以始终使用格式(例如s%d.4)设置字符串,并围绕该格式构建数组。
var text:NSMutableArray = NSMutableArray()

for index in 1...10 {
    let formattedString = String(format: "s%.4d", index)

    let localizedString = NSLocalizedString(formattedString, comment: "comment")

    text.addObject(localizedString)
}

然后您可以像这样声明字符串:s0001,s0002,s0003等。

谢谢 @tiago-almeida,不幸的是,第一行给出了一个错误:模式中缺少类型注释。如果我将其更改为'var text: String',它会报错:无法使用类型为(String)的参数列表调用NSLocalizedString。 - eeschimosu
嗨 @Eduard,不得不使用一个playground来修复代码:)。我已经编辑了答案。 - Tiago Almeida
非常感谢!这对我帮助很大! - eeschimosu
没问题,@Eduard。我很高兴能帮到你:)。 - Tiago Almeida

0

或者你可以这样做:

辅助类

static func getLocalized(withKey key: String, targetSpecific:Bool) -> String{

    if targetSpecific{
        return NSLocalizedString(key, tableName:"TargetSpecific", comment: "")
    }
    else{
        return NSLocalizedString(key, comment: "")
    }
}

static func getLocalizedArray(withKey key: String, targetSpecific:Bool) -> [String]{

    return getLocalized(withKey: key, targetSpecific: targetSpecific).components(separatedBy: ",")

}

Localizable.string

"optionsArray" = "Show devices,Add device";

所以你可以这样调用:

let optionsArray:[String] = AppHelper.getLocalizedArray(withKey: "optionsArray", targetSpecific: false)

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接