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

Posted

技术标签:

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

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

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

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

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

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

【问题讨论】:

【参考方案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。

以上是关于如何在 Swift 中本地化 tableView 单元格?的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Swift 中使用 MagicalRecord CoreData 删除 tableview 中的记录

如何在 swift 中更改 tableView 部分中的文本颜色

Swift:如何在 tableView 中模糊点击单元格

如何在 swift 中在动态 TableView 中创建动态 tableView?

如何在 Swift 中使用两个 TableView 设计动态布局

如何在 Swift 3 中使用 JSON 填充 TableView