2012-04-09 57 views
0

有没有办法对包含分层或分组数据的plist进行本地化?使用分组数据本地化plist

例如,如果plist中包含:

  • 1册(字典)
    • 键(串)
    • 名称(字符串)
    • 说明(本地化的字符串)
  • Book 2(dictionary)
    • 键(串)
    • 名称(字符串)
    • 说明(本地化的字符串)
      (诸如此类......)

为了示范起见,KeyName应该而不是被翻译(并且最好不应该在多个本地化属性列表中重复)。

是否有一种机制可以为本地化的Description字段提供本地化,而无需本地化整个属性列表?我唯一想到的另一个策略是在description字段中存储查找键,并使用它来通过NSLocalizedString检索本地化文本(...)

plist是静态的,并与应用程序包一起分发马上。

谢谢。

回答

0

这是一个静态的plist还是动态的?您希望从哪里获得本地化的字符串? NSLocalizedString()从您包中的Localizable.strings文件中获取它。如果plist是静态的,并且您可以将所有本地化与您的应用一起发布,那么您可以使用该描述作为关键字,然后使用NSLocalizedString()或其变体之一查找它。

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

要修复这个缺点,你可以把本地化放在plist中的一个单独的部分。基本上,这将是一本字典词典。外部字典的键可以是区域标识符,内部字典的键可以是英文字符串,并且内部值可以是本地化字符串。 (变体1:使用查找键代替英文字符串变体2:反转内部和外部字典,所以英文字符串是外部字符并且区域设置ID是内部字符。)

+0

听起来像真的没有规定的方法本地化plist的部分;我可能会使用关键的&NSLocalizedString()方法,因为我希望将来可以从REST服务获得本地化;但我完全可以看到映射包含所有本地化的key => dict的值。 – 2012-04-11 19:04:05