iOS应用程序始终使用(错误)本地化

问题描述 投票:1回答:2

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

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

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

Bundle.main.preferredLocalizations.first也回归en

附录: 应用程序显示的系统对话框为英文。 关键CFBundleDevelopmentRegionen设置为Info.plistBase.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">

任何提示?

ios internationalization xcode8
2个回答
1
投票

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


1
投票

对我来说,我不得不编辑我的计划。在Build / Run和Stop Buttons旁边,单击您的Application并单击Edit Scheme ...

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

现在在运行选项卡中,其中应该有4个其他选项卡(信息,参数,选项和诊断) - 确保您在选项选项卡上!

在“选项”选项卡中,向下滚动,您将看到“应用程序语言”。在我的情况下,应用程序语言设置为西班牙语,这使得无论如何,我的应用程序将使用西班牙语进行本地化。将应用程序语言更改为系统语言使得构建按预期工作,使用我的设备当时使用的任何语言。

希望这有助于某人!

© www.soinside.com 2019 - 2024. All rights reserved.