有没有办法本地化包含分层或分组数据的plist?
例如,如果plist包含:
为了示例,Key
和Name
应不进行翻译(最好不要在多个本地化属性列表中重复)。
是否存在为可本地化的Description
字段提供本地化而不本地化整个属性列表的机制?我想到的唯一其他策略是在description
字段中存储查找键,然后使用它来通过NSLocalizedString(...)
plist是静态的,现在正与app bundle一起分发。
感谢。
答案 0 :(得分:0)
这是一个静态的plist还是一个动态的plist?您希望从哪里获得本地化的字符串? NSLocalizedString()
从捆绑包中的Localizable.strings文件中获取它。如果plist是静态的,您可以使用您的应用程序发送所有本地化,那么您可以使用描述作为密钥,并使用NSLocalizedString()
或其中一个变体进行查找。
如果plist是动态的,那么您可以将每个Description描述为从区域设置标识符到字符串的dict
映射。你可以使用[NSBundle preferredLocalizationsFromArray:[theDict allKeys]]
选择正确的。这样做的缺点是,如果对多本书使用相同的描述,则必须重复其本地化。
要解决这个问题,您可以将本地化放入plist中的单独部分。基本上,这将是一本字典词典。外部字典的键可以是语言环境标识符,内部字典的键可以是英语字符串,内部值可以是本地化字符串。 (变式1:使用查找键而不是英文字符串。变体2:反转内部和外部字典,因此英文字符串为外部,区域设置ID为内部。)