我在Mac App Store的OSX项目中添加了几个本地化,提交了应用程序,但只识别了英语(本地化:(“英语”),取自ITC Binary Details)。该产品在iTunes上运行,其中英语是唯一显示的语言。
使用自定义系统处理本地化字符串,因此我们不需要像English.lproj这样的额外文件夹。为了本地化应用程序,我刚刚在项目的Info.plist中添加了所有语言标识符,在CFBundleLocalizations关键字下,正如Apple在https://developer.apple.com/library/mac/#documentation/MacOSX/Conceptual/BPInternational/Articles/ChoosingLocalizations.html建议
应用程序可以通过其信息属性列表(Info.plist)文件通知系统它支持其他本地化。要指定捆绑包的.lproj目录中未包含的本地化,请将CFBundleLocalizations密钥添加到此文件中。键的值是一个字符串数组,每个字符串都包含一个ISO语言指示符,如“语言和语言环境指定”中所述。
指定本地化的plist文件部分是:
<key>CFBundleLocalizations</key>
<array>
<string>en</string>
<string>de</string>
<string>fr</string>
<string>it</string>
<string>es</string>
<string>pt</string>
<string>nl</string>
<string>se</string>
</array>
我过去在2个iOS应用上使用了完全相同的方法,并且它们都运行良好。我不明白为什么这次我们得到了不同的行为。有什么想法吗?
感谢。
答案 0 :(得分:4)
我终于明白了。
在我的问题中,我说:
使用自定义系统处理本地化字符串,因此我们不需要额外的文件夹,例如English.lproj。
事实证明,这正是我解决这个问题的方法。我去了项目&gt; “信息”选项卡,在“本地化”下,为应用支持的每种语言添加一个条目。这为每个创建了一个文件夹,例如es.lproj,fr.lproj等我提交了应用程序,在iTunesConnect中,我看到本地化被识别出来了:
本地化:(“de”,“英语”,“es”,“fr”,“it”,“nl”,“pt”,“sv”)
更新还没有结束,但我相信一切都会好的。
我仔细检查了一个较旧的iOS应用,其中包含3个本地化版本,这些版本已被正确识别。在那个应用程序中,我没有使用上述过程创建任何额外的.lproj文件夹。我所做的就是在CFBundleLocalizations下的plist文件中包含本地化标识符。我不知道在这方面iOS和OSX应用程序之间是否存在某种本质上不同的东西。如果有人对此有任何意见,我很高兴知道为什么我在这里做的事实际上解决了这个问题。
答案 1 :(得分:1)
也很适合我,但由于appirater拥有所有lproj文件夹,我不明白为什么所有语言都没有出现在iTunes说明中。
事实证明,即使您在项目导航器中看到所有lproj文件夹,它们也不会包含在您的包中,除非您在Project中添加实际支持的语言 - &gt;信息。