objective-c – 在plist文件中的Xcode 4.6本地化
我已经开始在我的项目中添加更多语言并获得了字符串&图形本地化没有太大麻烦.
我有一个最后一个问题,它是一个plist文件. 此plist文件包含应用程序的默认类别名称,并在字典中填充英语字符串. 我的问题是:有没有办法本地化plist文件?我虽然要向plist添加本地化字符串,但无法弄清楚如何. 我不想在代码中决定使用plist文件,因为默认的plist文件在首次使用时被用户覆盖. 解决方法
本地化的Plist文件
这里更容易的解决方案是本地化整个plist.通过这样做,您将为每种受支持的语言使用不同的plist文件. 在项目中选择plist文件,然后在File Inspector菜单中选择Localize. 它将为每种支持的语言创建一个包含Plist文件的新文件夹. 从:
至: > en.lproj > > dummy.plist > es.lproj > > dummy.plist > de.lproj > > dummy.plist 本地化的Plist内容 另一种解决方案是在plist中使用本地化字符串,并在打印出提取的字符串之前简单地调用NSLocalizedString. 想象一下,你有一个像这样的Plist: 您可以通过将键添加到Localizable.strings文件来简单地本地化其字符串.例如,西班牙语: "My menu title" = "Mi título del menú"; "My menu description" = "Mi descripción del menú"; 或者,我的建议,将您的本地语言字符串从Plist移动??到字符串文件,并用可本地化的键替换Plist字符串: 和Engligh的Localizable.strings: "MY_MENU_TITLE" = "My menu title"; "MY_MENU_DESCRIPTION" = "My menu description"; 和西班牙语: "MY_MENU_TITLE" = "Mi título del menú"; "MY_MENU_DESCRIPTION" = "Mi descripción del menú"; 我发现最新的语言更容易维护,更容易本地化,因为所有必需的字符串都在同一个文件中. 最后更改您的代码以使用NSLocalizableString而不是从Plist文件中读取的纯字符串.例如,假设您有代码: NSDictionary* plistDict = [[NSDictionary alloc] initWithContentsOfFile:[[NSBundle mainBundle] pathForResource:@"menuElements" ofType:@"plist"]]; menuTitleLabel.text = plistDict[@"menuTitle"]; menuDescriptionLabel.text = plistDict[@"menuDescription"]; 只需将其更改为: NSDictionary* plistDict = [[NSDictionary alloc] initWithContentsOfFile:[[NSBundle mainBundle] pathForResource:@"menuElements" ofType:@"plist"]]; menuTitleLabel.text = NSLocalizedString(plistDict[@"menuTitle"],nil); menuDescriptionLabel.text = NSLocalizedString(plistDict[@"menuDescription"],nil); 如果这是你的情况,你可以完全摆脱plist文件: menuTitleLabel.text = NSLocalizedString(@"MY_MENU_TITLE",nil); menuDescriptionLabel.text = NSLocalizedString(@"MY_MENU_DESCRIPTION",nil); (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |