根据区域设置选择模型的正确属性 class?

Choosing right properties of a model class depending on the locale settings?

说,我有一个模型(用于 Realm 数据库):

class Country: Object {
  dynamic var id = ""
  dynamic var nameRu = ""
  dynamic var nameEn = ""
}

我在代码的某处显示了这样一个国家的名称:

cell.textLabel?.text = countries[indexPath.row].nameRu

那么,如何根据区域设置自动显示 nameRunameEn?有 "smart" 的方法吗?

谢谢。

一种选择是使用标准 iOS 本地化方法。此方法假设您的基本本地化是英语,因此 "Country::name" 是 "Russia",它将作为 'key' 到 Localizable.strings。

  1. 您的国家/地区对象不需要保存所有翻译;因此简化为:

    class Country: Object {
            dynamic var id = ""
            dynamic var name = ""
    }
    
  2. 创建一个 Localizable.strings 文件(对于 ru-RU)

    /* 
            Localizable.strings (ru-RU)
    */
    "Russia" = "Россия"
    "Germany" = "Германия"
    
    /* 
            Localizable.strings (en-US)
            (optional)
    */
    "Russia" = "Russia"
    "Germany" = "Germany"
    
  3. 调用使用:

    cell.textLabel?.text = NSLocalizedString(countries[indexPath.row].name, comment: "Country name  that will translate based on iOS region preference in Settings > General > Language & Region")
    

像下面这样的东西可以工作吗?

let country = countries[indexPath.row]
cell.textLabel?.text = country["name\(localization)"]

其中 localizationEn 还是 Ru