Seb*_*ger 8 xcode localization objective-c plist
我已经开始在我的项目中添加更多语言,并且本地化的字符串和图形没有太多麻烦.
我有一个最后一个问题,它是一个plist文件.
此plist文件包含应用程序的默认类别名称,并在字典中填充英文字符串.
我的问题是:有没有办法本地化plist文件?我虽然要向plist添加本地化字符串,但无法弄清楚如何.
我不想在代码中决定使用plist文件,因为默认的plist文件在首次使用时被用户覆盖.
red*_*t84 24
这里更容易的解决方案是本地化整个plist.通过这样做,您将为每种受支持的语言使用不同的plist文件.
在项目中选择plist文件,然后在File Inspector菜单中选择Localize.
它将为每种支持的语言创建一个包含Plist文件的新文件夹.
从:
dummy.plist
至:
> en.lproj
> > dummy.plist
> es.lproj
> > dummy.plist
> de.lproj
> > dummy.plist
Run Code Online (Sandbox Code Playgroud)
另一种解决方案是在plist中使用本地化字符串,并NSLocalizedString
在打印出提取的字符串之前简单地调用.
想象一下,你有一个像这样的Plist:
您可以通过将键添加到Localizable.strings
文件来简单地本地化其字符串.例如,西班牙语:
"My menu title" = "Mi título del menú";
"My menu description" = "Mi descripción del menú";
Run Code Online (Sandbox Code Playgroud)
或者,我的建议,将您的本地语言字符串从Plist移动到字符串文件,并用可本地化的键替换Plist字符串:
你Localizable.strings
的Engligh:
"MY_MENU_TITLE" = "My menu title";
"MY_MENU_DESCRIPTION" = "My menu description";
Run Code Online (Sandbox Code Playgroud)
和西班牙语:
"MY_MENU_TITLE" = "Mi título del menú";
"MY_MENU_DESCRIPTION" = "Mi descripción del menú";
Run Code Online (Sandbox Code Playgroud)
我发现最新的语言更容易维护,更容易本地化,因为所有必需的字符串都在同一个文件中.
最后更改代码以使用NSLocalizableString
而不是从Plist文件中读取的纯字符串.例如,假设你有代码:
NSDictionary* plistDict = [[NSDictionary alloc] initWithContentsOfFile:[[NSBundle mainBundle] pathForResource:@"menuElements" ofType:@"plist"]];
menuTitleLabel.text = plistDict[@"menuTitle"];
menuDescriptionLabel.text = plistDict[@"menuDescription"];
Run Code Online (Sandbox Code Playgroud)
只需将其更改为:
NSDictionary* plistDict = [[NSDictionary alloc] initWithContentsOfFile:[[NSBundle mainBundle] pathForResource:@"menuElements" ofType:@"plist"]];
menuTitleLabel.text = NSLocalizedString(plistDict[@"menuTitle"], nil);
menuDescriptionLabel.text = NSLocalizedString(plistDict[@"menuDescription"], nil);
Run Code Online (Sandbox Code Playgroud)
如果这是你的情况,你可以完全摆脱plist文件:
menuTitleLabel.text = NSLocalizedString(@"MY_MENU_TITLE", nil);
menuDescriptionLabel.text = NSLocalizedString(@"MY_MENU_DESCRIPTION", nil);
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
7994 次 |
最近记录: |