我有一个最后一个问题,它是一个pList文件.
此pList文件包含应用程序的默认类别名称,并在字典中填充英语字符串.
我的问题是:有没有办法本地化pList文件?我虽然要向pList添加本地化字符串,但无法弄清楚如何.
我不想在代码中决定使用pList文件,因为默认的pList文件在首次使用时被用户覆盖.
解决方法 本地化的PList文件这里更容易的解决方案是本地化整个pList.通过这样做,您将为每种受支持的语言使用不同的pList文件.
在项目中选择pList文件,然后在@R_404_6852@ Inspector菜单中选择Localize.
它将为每种支持的语言创建一个包含PList文件的新文件夹.
从:
dummy.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] initWithContentsOf@R_404_6852@:[[NSBundle mainBundle] pathForResource:@"menuElements" ofType:@"pList"]];menuTitleLabel.text = pListDict[@"menuTitle"];menuDescriptionLabel.text = pListDict[@"menuDescription"];
只需将其更改为:
NSDictionary* pListDict = [[NSDictionary alloc] initWithContentsOf@R_404_6852@:[[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);@H_301_94@ 总结
以上是内存溢出为你收集整理的objective-c – 在plist文件中的Xcode 4.6本地化全部内容,希望文章能够帮你解决objective-c – 在plist文件中的Xcode 4.6本地化所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)