使用分组数据本地化plist

时间:2012-04-09 23:26:05

标签: ios cocoa localization plist

有没有办法本地化包含分层或分组数据的plist?

例如,如果plist包含:

  • 第1册(字典)
    • 键(字符串)
    • 姓名(字符串)
    • 描述(可本地化的字符串)
  • 第2册(字典)
    • 键(字符串)
    • 姓名(字符串)
    • 描述(可本地化的字符串)
      (诸如此类...)

为了示例,KeyName进行翻译(最好不要在多个本地化属性列表中重复)。

是否存在为可本地化的Description字段提供本地化而不本地化整个属性列表的机制?我想到的唯一其他策略是在description字段中存储查找键,然后使用它来通过NSLocalizedString(...)

检索本地化文本

plist是静态的,现在正与app bundle一起分发。

感谢。

1 个答案:

答案 0 :(得分:0)

这是一个静态的plist还是一个动态的plist?您希望从哪里获得本地化的字符串? NSLocalizedString()从捆绑包中的Localizable.strings文件中获取它。如果plist是静态的,您可以使用您的应用程序发送所有本地化,那么您可以使用描述作为密钥,并使用NSLocalizedString()或其中一个变体进行查找。

如果plist是动态的,那么您可以将每个Description描述为从区域设置标识符到字符串的dict映射。你可以使用[NSBundle preferredLocalizationsFromArray:[theDict allKeys]]选择正确的。这样做的缺点是,如果对多本书使用相同的描述,则必须重复其本地化。

要解决这个问题,您可以将本地化放入plist中的单独部分。基本上,这将是一本字典词典。外部字典的键可以是语言环境标识符,内部字典的键可以是英语字符串,内部值可以是本地化字符串。 (变式1:使用查找键而不是英文字符串。变体2:反转内部和外部字典,因此英文字符串为外部,区域设置ID为内部。)