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

时间:2011-08-12 17:06:27

标签: iphone ios ipad

我想在设置页面上使用内置常见问题解答发送我的应用。常见问题很简单:

1)我们有一个表格视图,列出了所有问题。每个细胞一个。

2)当用户点击其中一个问题时,我们会滑动到详细视图控制器,该控制器以粗体字母显示问题,然后是答案。非常简单。

困难的部分:用字符串提供表视图和详细视图控制器的最佳方法是什么?

糟糕的想法(从我的观点来看):

  • 对所有字符串进行硬编码,并与巨型ifswitch怪物一起使用。

  • 依靠NSLocalizedString()来获取答案的本地化版本。这些字符串文件看起来不像是用于非常大的字符串。仅为每行几句话或单词。随着大量的FAQ文本,这些字符串文件将变得可怕。

这就是我尝试这样做的方法,但你可以提出一个更好的方法:

解决方案1)

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

  • 本地化该JSON文件。

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

  • 当用户点击一个单元格时,要么只是传递ID以重新获取整个内容,要么更好:将ID,问题和答案字符串传递给详细信息视图控制器。

    < / LI>

解决方案2)

与1相似,但请使用Core Data。可能更好的内存和性能,但可能更难维护(必须乱用SQLite3文件来构建常见问题解答,至少需要一个好的IDE来做到这一点,不要发疯)。警告:不能轻易将它传递给翻译。大量的手工工作只是为了创建SQLite3文件。本地化文件夹中的文件。

解决方案4)

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

解决方案5)

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

解决方案6)

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

1 个答案:

答案 0 :(得分:2)

通常情况下,您可以本地化localizedStrings - 文件,以便在运行NSLocalizedString时翻译它们。您可能不知道的是,这基本上适用于所有类型的文件,因此plist也是如此:

  1. 创建本地化的常见问题plist - 文件。
  2. 使用[NSArray arrayWithContentsOfFile:[[NSBundle mainBundle] pathForResource:@"faq" ofType:@"plist"]];
  3. 请求(来自应用程序)
  4. UITableView中实施。 (- (NSInteger)numberOf... =&gt; return [faq count];)。
  5. 哦,我使用plist - 文件而不是JSON或XML,因为Apple使用它,因为它很容易实现(内置NSArray - arrayWithContentsOfFile),你可以很容易地维护它xcode中。