iOS本地化:模拟器的行为与设备不同

时间:2016-08-12 16:43:26

标签: ios localization internationalization

我在我的应用中设置了2种语言:

  • 英语(开发语言)
  • 意大利

enter image description here

我希望如果将设备设置为与意大利语不同的语言,则应用会以英语显示。

但是我注意到模拟器和设备之间存在不一致性:

  • 如果我将模拟器设置为西班牙语,则该应用会以英语
  • 显示
  • 如果我将设备设置为西班牙语,则该应用会出现在意大利语

当设备语言设置为西班牙语时,如何确保应用以英语显示?

1 个答案:

答案 0 :(得分:1)

我认为这种不一致是由Setting App -> General -> Language & Region中的首选语言顺序引起的。您的iPhone设备很可能已经订购了意大利的偏好。

如Apple的文档(https://developer.apple.com/library/ios/qa/qa1828/_index.html

中所述
  

要确定应用的语言,iOS不仅会考虑用户语言首选项的顺序(在常规>设置应用程序的语言和区域中),还会考虑应用声明它支持的本地化。这是详细的过程:

     
      
  1. iOS首先会查找用户最喜欢的语言,这是他们语言偏好中的第一个条目。

  2.   
  3. 继续检查您的应用是否支持该语言。 iOS会在您的应用包中搜索与首选语言匹配的.lproj文件夹。如果文件夹存在,iOS会推断您的应用已针对该语言进行了本地化,并为您的应用选择了该应用。否则,iOS会在用户语言首选项中选择下一种语言,然后重复上述检查。   

    iOS中的方言支持可能会略微改变上述行为。如果您的用户的首选语言是您的应用不支持的区域变体,那么iOS会在放弃之前尝试使用更通用的语言。例如,如果您的用户的首选语言是英式英语,并且您的应用包不包含en-GB.lproj或en_GB.lproj文件夹,则iOS会在您的包中搜索en.lproj文件夹,并为您的应用选择英语,如果文件夹存在。

  4.   
  5. 如果您的应用不支持用户的首选语言,iOS会选择与您应用的开发区域匹配的语言(CFBundleDevelopmentRegion)。

  6.   

总结中,

一个。对于知道意大利语和英语的用户,它将显示在他们的 偏好。

湾如果他们只知道其中一个,它将显示正确的一个。

℃。如果他们不知道两者,您应该在info.plist中设置CFBundleDevelopmentRegion以选择英语。