【问题标题】:Suitable data structure to save localized settings适合保存本地化设置的数据结构
【发布时间】:2015-04-01 06:39:05
【问题描述】:

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

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

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

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

Settings_en.plist(英文)

Settings_sv.plist(瑞典语)

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

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

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

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

【问题讨论】:

    标签: ios uitableview swift localization settings


    【解决方案1】:

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

    1. 不要创建多个 plist,而是创建一个 plist 并使用英文键。

    1. 然后在您的字符串文件中使用相同的英文键来本地化字符串。

    Localizable.strings(英文)

    FULL_SCREEN = "全屏";

    SUBTITLES = "字幕";

    Localizable.strings(瑞典语)

    FULL_SCREEN = "赫尔斯卡姆";

    SUBTITLES = "Undertexter";

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

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

    【讨论】:

      猜你喜欢
      • 2020-02-28
      • 2011-02-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-03-14
      • 2014-12-18
      • 2015-10-23
      • 1970-01-01
      相关资源
      最近更新 更多