【问题标题】:iOS app always uses (wrong) localizationiOS 应用程序总是使用(错误的)本地化
【发布时间】:2017-01-04 12:51:04
【问题描述】:

我有一个设计有英文用户界面的应用程序,另外还有德文 UI 翻译。运行时,会选择正确的用户界面语言。使用 Base Internationalization,Xcode 8.2.1,Swift 3。

然后我将应用程序克隆到一个新的应用程序中,主要是剥离部分并重命名应用程序。这是一个相当大的 PITA(抱歉),主要问题是 CocoaPods 不再被识别(import 上的错误)等。经过一番摆弄后它再次工作,但 UI 总是在德语(!) ,无论 iOS 设置如何。即使 iPhone 语言是英语,没有其他首选语言,并且地区是美国,应用程序 UI 也会以德语显示。

奇怪的是,应用中使用的字符串(通过NSLocalizedString())以英文正确选择。

Bundle.main.preferredLocalizations.first 也返回 en

附录:
该应用程序显示的系统对话框是英文的。
Info.plist 中的键 CFBundleDevelopmentRegion 设置为 en
Base.lproj/Main.storyboard中的UI文本是英文的。

在模拟器和真实设备上的行为相同。

我怀疑英语(基本)用户界面在此过程中变得不可用。但是,在 Interface Builder 中,英文版本显示为“Main Storyboard > Main Storyboard (Base)”,并带有一个包含翻译的兄弟文件“Main.strings (German)”。

附录 2:在项目 → 信息 → 本地化中,我可以看到“英语 - 开发语言:2 个本地化文件”但“德语:5 个本地化文件”。也许这就是为什么某些资源在运行时无法以英语提供的原因。但我无法确定这些条目是指哪些文件。
如果我“为本地化而导出”,我会得到一个带有这 5 个(!)标题的 xliff 文件(XY 是项目名称):

  <file original="XY/Base.lproj/LaunchScreen.storyboard" source-language="en" datatype="plaintext" target-language="de">
  <file original="XY/Base.lproj/Main.storyboard" source-language="en" datatype="plaintext" target-language="de">
  <file original="XY/Info.plist" source-language="en" datatype="plaintext" target-language="de">
  <file original="XY/Localizable.strings" source-language="en" datatype="plaintext" target-language="de">
  <file original="XY/Main.strings" source-language="en" datatype="plaintext" target-language="de">

有什么提示吗?

【问题讨论】:

  • 我也遇到了同样的问题,你找到解决办法了吗?
  • @Franck:不幸的是,没有。但幸运的是,我能够跳过整个项目。也许我会用新的 Xcode 9 再试一次。

标签: ios internationalization xcode8


【解决方案1】:

您可能需要编辑您的方案。在您的构建/运行和停止按钮旁边,单击您的应用程序,然后单击Edit Scheme

在弹出的窗口中,确保您位于“运行”选项卡上。

现在在 Run 选项卡中,应该还有 4 个其他选项卡(InfoArgumentsOptions > 和 诊断) - 确保您位于 选项 选项卡上!

选项选项卡中,向下滚动,您应该会看到应用程序语言。在我的情况下,应用程序语言设置为西班牙语,因此无论如何,我的应用程序都将使用西班牙语进行本地化。将 Application Language 更改为 System Language 可以使构建按预期工作,使用我的设备当时使用的任何语言。

希望这对某人有所帮助!

【讨论】:

    【解决方案2】:

    尝试在 Info.plist 中将 CFBundleAllowMixedLocalizations 设置为 yes

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2019-04-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-02-15
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多