如何本地化iOS 8的今日扩展小部件以及小部件名称

12

我不明白如何本地化今天的小组件,我希望创建像普通的 xcode 项目一样的 Localize.strings 文件,例如包含以下字符串:

.en
    "Apple" = "Apple"

.it
    "Apple" = "Mela"

我也想知道如何本地化 iOS 8 今日扩展小部件的名称。

我尝试在 Xcode 中创建 Strings File,并尝试插入以下内容:

"CFBundleDisplayName" = "App Name";

但名称不会改变...

2个回答

21
LSHasLocalizedDisplayName = YES 添加到 Info.plist 文件中,并将本地化信息添加到 InfoPlist.strings,你需要将其放置在每个语言的 language.proj 文件夹下,例如德语版本的 de.lproj 文件夹。
测试之前要做以下几件事情: - 清理项目 - 从模拟器中删除应用程序。 - 将 language.proj 文件夹引用添加到扩展的 Supporting files 部分 - 以便将它们包含在扩展目标的 Build Phases 中的 Copy bundle resources 部分中。

谢谢您的回答,我应该在哪里插入本地化名称? - Piero
谢谢,InfoPlist.strings文件在哪里?我需要创建它吗? - Piero
jp.lproj、fr.lproj、it.lproj...文件夹 - frankish
在尝试之前,从模拟器中删除应用程序并清理项目。 - frankish
我已经做了所有的事情,现在小部件的名称已经改变了,但是例如 NSLocalizedString(@"Apple", @"") 没有改变,在 InfoPlist.strings 中我添加了这个:"Apple" = "Apple" 在 .en 文件中,而在 .it 文件中,例如 "Apple" = "Mela",但只有 CFBundleDisplayName 起作用... 有什么建议吗? - Piero
InfoPlist.strings 文件仅用于 Info.plist 中的值。尝试使用 Localizable.strings 处理其他内容。 - frankish

2

您的应用程序和今日小组件中的字符串可以共享相同的本地化文件。您只需选择Localizable.string,并在文件检查器中检查您的今日小组件目标是否在目标成员资格中。然后,您今日小组件中的所有NSLocalizedString都与包含本地化字符串共享一个。

对于今日小组件的应用程序名称,只需添加一个InfoPlist.strings文件即可。

"CFBundleDisplayName" = "Translated Name";
"CFBundleName" = "Translated Name";

只需运行包含应用程序进行测试。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接