【问题标题】:How to localize tableView cells in Swift?如何在 Swift 中本地化 tableView 单元格?
【发布时间】:2018-01-21 19:31:47
【问题描述】:

如何在 Swift 中本地化 TableView 单元格?

对于一个字符串变量,它是:

let alertTitle = NSLocalizedString("a", comment: "")

但是如何本地化 TableView 的数组?

let array = ["a", "b", "c", "d", "e"]

【问题讨论】:

    标签: ios arrays swift uitableview localization


    【解决方案1】:

    您需要像使用alertTitle 一样分别本地化每个字符串。如果您不使用本地化字符串的注释(大多数人都这样做),您可以使用扩展名简化本地化

    extension String {
    
        var localized: String {
            return NSLocalizedString(self, comment: "")
        }
    
    }
    

    并用

    定义你的数组
    let array = ["a".localized, "b".localized, "c".localized, "d".localized, "e".localized]
    

    甚至更短

    let let array = ["a", "b", "c", "d", "e"].map({ $0.localized })
    

    【讨论】:

    • 这种方法存在一个严重的问题 - 您不能使用 genstrings 在代码中使用 NSLocalizedString 生成字符串文件,并且您不能为每个字符串提供正确的 cmets .
    【解决方案2】:

    使用@sundance 的字符串扩展:

    extension String {
        var localized: String {
            return NSLocalizedString(self, comment: "")
        }
    }
    

    我更喜欢使用这个扩展而不是[String]

    extension Array where Element == String {
        var localized: [Element] {
            return self.map({ $0.localized })
        }
    }
    

    那么你可以使用这个:

    let array = ["a", "b", "c", "d", "e"].localized
    

    【讨论】:

    • 这种方法存在一个严重的问题 - 您不能使用 genstrings 在代码中使用 NSLocalizedString 生成字符串文件,并且您不能为每个字符串提供正确的 cmets .
    【解决方案3】:
     let array = [NSLocalizedString("a", comment: ""), NSLocalizedString("b", comment: ""), NSLocalizedString("c", comment: ""), NSLocalizedString("d", comment: ""), NSLocalizedString("e", comment: "")]
    

    本地化相关数据组时我喜欢的某种方式

     let arrayLocalized = [string]()
    
     for i in 1...10
     {
       arrayLocalized.append(NSLocalizedString("a\(i)", comment: ""))
    
     }
    

    本地化文件看起来像这样

     "a1"="first value";
    
     "a2"="second value";
    
      .
      .
      .
    
    
     "a10"="last value";
    

    【讨论】:

    • 使用 for 循环的方法存在严重问题 - 您不能使用 genstrings 在代码中使用 NSLocalizedString 生成字符串文件,而且您不能为每个字符串提供适当的 cmets。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-04-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-12-30
    相关资源
    最近更新 更多