Iphone 如何在应用程序中提供多语言常见问题解答?

Iphone 如何在应用程序中提供多语言常见问题解答?,iphone,ios,ipad,Iphone,Ios,Ipad,我想在“设置”页面上附带内置的常见问题解答。常见问题解答很简单: 1) 我们有一个表格视图,其中列出了所有问题。每个单元一个 2) 当用户点击其中一个问题时,我们将滑向详图视图控制器,该控制器以粗体字母显示问题,然后显示答案。很简单 难点:向表视图和细节视图控制器提供字符串的最佳方式是什么 坏主意(在我看来): 硬编码所有字符串并使用巨人if或switch怪物 依靠NSLocalizedString()获取答案的本地化版本。那些字符串文件看起来不像是用于非常大的字符串。每行只写几个句子或单词。

我想在“设置”页面上附带内置的常见问题解答。常见问题解答很简单:

1) 我们有一个表格视图,其中列出了所有问题。每个单元一个

2) 当用户点击其中一个问题时,我们将滑向详图视图控制器,该控制器以粗体字母显示问题,然后显示答案。很简单

难点:向表视图和细节视图控制器提供字符串的最佳方式是什么

坏主意(在我看来):

  • 硬编码所有字符串并使用巨人
    if
    switch
    怪物

  • 依靠
    NSLocalizedString()
    获取答案的本地化版本。那些字符串文件看起来不像是用于非常大的字符串。每行只写几个句子或单词。有了成吨的FAQ文本,这些字符串文件将变得可怕

这是我尝试的方法,但您可以建议一种更好的方法:

解决方案1)

  • 创建一个JSON文件,其中实体有三个字段:ID、问题和答案。ID将帮助我们跟踪用户点击单元格后必须加载的答案

  • 本地化JSON文件

  • 加载表视图时,将其读入内存并进行解析,只需读出问题和ID(是的,不太理想,对吧?)

  • 当用户点击一个单元格时,或者传递ID只是为了再次获取整个内容,或者更好:将ID、问题和答案字符串传递给details view控制器

解决方案2)

类似于1,但使用核心数据。在内存和性能方面可能更好,但维护起来可能更难(必须使用SQLite3文件来构建FAQ,至少需要一个好的IDE才能做到这一点,以免发疯)。警告:不能轻易地将其传递给翻译人员。创建SQLite3文件需要大量的手工工作。本地化文件夹中的本地化文件

解决方案4)

两个分割的JSON文件:一个包含所有ID和问题。另一个有所有ID和答案的。本地化文件夹中的本地化文件

解决方案5)

包含所有ID和问题的JSON文件。对于每个ID,都有一个匹配的应答文本文件。因此,我们不会仅仅为了提取数据的一小部分而将大量数据加载到内存中

解决方案6)


使用已经存在的东西,或者使用不同的方法。建议?

通常,您将本地化
LocalizedString
-文件,以便在运行
NSLocalizedString
时可以对其进行翻译。您可能不知道的是,这基本上适用于所有类型的文件,因此
plist
s:

  • 创建本地化的faq
    plist
    -文件
  • 使用
    [NSArray arrayWithContentsOfFile:[[NSBundle mainBundle]pathForResource:@“faq”类型:@“plist”]]请求它(从应用程序中)
  • 在您的
    UITableView
    中实现它。(
    -(NSInteger)numberOf…
    =>
    返回[faq计数];

  • 哦,我使用了一个
    plist
    -文件,而不是JSON或XML,因为苹果使用它,因为它很容易实现(
    NSArray-arrayWithContentsOfFile
    内置),而且你可以很容易地在Xcode中维护它。

    为什么是XML?使用。一旦开始使用JSON over XML,您就会意识到解析xmlGood point浪费了多少时间。谢谢你提到这一点。这是一种有趣的方式!谢谢所以在plist文件中,我们只有两列:答案和问题。是这样吗?或者我们是否有一个由plist中的行表示的“隐式ID”?我建议创建一个
    数组
    根项,其中包含
    NSDictionary
    -对象,具有两个键=>'question'和'answer'以及两个对应的值;)!