我在我的应用中设置了2种语言:
我希望如果将设备设置为与意大利语不同的语言,则应用会以英语显示。
但是我注意到模拟器和设备之间存在不一致性:
当设备语言设置为西班牙语时,如何确保应用以英语显示?
答案 0 :(得分:1)
我认为这种不一致是由Setting App -> General -> Language & Region
中的首选语言顺序引起的。您的iPhone设备很可能已经订购了意大利的偏好。
如Apple的文档(https://developer.apple.com/library/ios/qa/qa1828/_index.html)
中所述要确定应用的语言,iOS不仅会考虑用户语言首选项的顺序(在常规>设置应用程序的语言和区域中),还会考虑应用声明它支持的本地化。这是详细的过程:
iOS首先会查找用户最喜欢的语言,这是他们语言偏好中的第一个条目。
继续检查您的应用是否支持该语言。 iOS会在您的应用包中搜索与首选语言匹配的.lproj文件夹。如果文件夹存在,iOS会推断您的应用已针对该语言进行了本地化,并为您的应用选择了该应用。否则,iOS会在用户语言首选项中选择下一种语言,然后重复上述检查。
iOS中的方言支持可能会略微改变上述行为。如果您的用户的首选语言是您的应用不支持的区域变体,那么iOS会在放弃之前尝试使用更通用的语言。例如,如果您的用户的首选语言是英式英语,并且您的应用包不包含en-GB.lproj或en_GB.lproj文件夹,则iOS会在您的包中搜索en.lproj文件夹,并为您的应用选择英语,如果文件夹存在。- 醇>
如果您的应用不支持用户的首选语言,iOS会选择与您应用的开发区域匹配的语言(CFBundleDevelopmentRegion)。
总结中,
一个。对于知道意大利语和英语的用户,它将显示在他们的 偏好。
湾如果他们只知道其中一个,它将显示正确的一个。
℃。如果他们不知道两者,您应该在info.plist中设置CFBundleDevelopmentRegion
以选择英语。