适合保存本地化设置的数据结构

时间:2015-02-02 10:31:44

标签: ios uitableview swift localization settings

这是场景。我在应用程序中有一组设置。例如,将我的应用视为视频播放器。因此,有允许全屏显示字幕等设置。所有这些设置都有布尔值,因为您可以打开或关闭它们。

这些设置应在表格视图中显示在应用内部。如果其中任何一个被激活或用户点击它们激活/停用,您可以通过设置该单元格的复选标记附件视图来显示它。

由于我需要以这种方式显示设置,并且只在应用程序中显示,因此我不能简单地使用设置包。还有一个问题。我需要对这些设置进行本地化。

我最初的想法是为我支持的语言单独使用plist。

Settings_en.plist (英文)

enter image description here

Settings_sv.plist (瑞典语)

enter image description here

然后根据系统语言获取plist名称并显示其值。

let filePath = NSBundle.mainBundle().bundlePath.stringByAppendingPathComponent(NSLocalizedString("SETTINGS_PLIST", comment: ""))

但这并不理想,因为我说我用瑞典语运行并且我将字幕设置改为开启。现在我必须在两个plists中更新它。如果我将来添加更多语言,这将很快变得更加混乱。

是否有更好的方法来存储更容易保存和获取的设置,还支持本地化?

1 个答案:

答案 0 :(得分:0)

我能在其他地方找到答案。以下是解决此问题的步骤。

  1. 不是使用多个plist,而是创建一个plist并使用英语键。
  2. enter image description here

    1. 然后使用相同的英文键在字符串文件中包含本地化字符串。
    2. Localizable.strings(英文)

        

      FULL_SCREEN =“全屏”;

           

      SUBTITLES =“字幕”;

      Localizable.strings(瑞典语)

        

      FULL_SCREEN =“Helskärm”;

           

      SUBTITLES =“Undertexter”;

      1. 在代码中,当您在表格视图中显示值时,请通过该键引用它们。

      2. let setting = settings[indexPath.row] as [String: Bool]
        let title = setting.keys.first
        cell.textLabel?.text = NSLocalizedString(title!, comment: "")