【问题标题】:iOS Localization: simulator behaves differently than deviceiOS 本地化:模拟器的行为与设备不同
【发布时间】:2016-08-12 16:43:26
【问题描述】:

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

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

我希望如果设备设置为不同于 意大利语 的语言,应用程序会以 English 出现。

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

  • 如果我将模拟器设置为 Spanish,应用程序会以 English 显示
  • 如果我将设备设置为 西班牙文,应用程序将以 意大利文 出现

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

【问题讨论】:

    标签: ios localization internationalization


    【解决方案1】:

    我认为这种不一致是由于Setting App -> General -> Language & Region 中的首选语言顺序造成的。您的 iPhone 设备可能以更高的偏好订购了意大利语。

    如 Apple 文档 (https://developer.apple.com/library/ios/qa/qa1828/_index.html) 中所述

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

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

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

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

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

    总之,

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

    b.如果他们只知道两者之一,它将显示正确的一个。

    c。如果他们都不知道,你应该在 info.plist 中设置 CFBundleDevelopmentRegion 以选择英语。

    【讨论】:

    • 是的,确实,该设备的意大利语优先顺序高于英语。感谢您的回答!
    猜你喜欢
    • 1970-01-01
    • 2011-12-14
    • 1970-01-01
    • 2020-02-27
    • 1970-01-01
    • 2013-05-24
    • 2014-11-16
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多