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

时间:2015-08-12 11:33:17

标签: ios swift localization realm

说,我有一个模型(对于Realm db):

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

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

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

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

谢谢。

2 个答案:

答案 0 :(得分:1)

可能会有以下工作吗?

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

其中localizationEn还是Ru

答案 1 :(得分:0)

一种选择是使用标准的iOS本地化方法。这种方法假设您的基本本地化是英语,因此“Country :: name”是“Russia”,它将充当Localizable.strings的“关键”。

  1. 您的国家/地区对象无需保留所有翻译;从而简化为:

    /* 
            Localizable.strings (ru-RU)
    */
    "Russia" = "Россия"
    "Germany" = "Германия"
    
    /* 
            Localizable.strings (en-US)
            (optional)
    */
    "Russia" = "Russia"
    "Germany" = "Germany"
    
  2. 创建Localizable.strings文件(对于ru-RU)

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

    _noviyVC.presentPlease = ^(UIViewController *controller)
    {
        [self.navigationController pushViewController:controller animated:YES];
    };