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

时间:2017-01-04 12:51:05

标签: ios internationalization xcode8

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

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

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

Bundle.main.preferredLocalizations.first也会返回en

附录:
应用程序显示的系统对话框为英文 CFBundleDevelopmentRegion中的密钥en设置为Info.plist Base.lproj/Main.storyboard中的用户界面文字为英文。

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

我怀疑英语(基础)用户界面在此过程中变得无法使用。但是,在Interface Builder中,英文版显示为" Main Storyboard>主要故事板(基地)"与兄弟文件" Main.strings(德语)"包含翻译。

附录2:在项目→信息→本地化中,我可以看到"英语 - 开发语言:2个文件本地化"但是"德语:5个文件本地化"。也许这就是为什么有些资源在运行时没有英文版的原因。但我无法确定条目的含义 如果我"导出本地化",我会得到一个xliff文件,其中包含5个(!)标题(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">

任何提示?

2 个答案:

答案 0 :(得分:1)

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

答案 1 :(得分:1)

对我来说,我必须编辑方案。在“构建/运行和停止”按钮旁边,单击您的应用程序,然后单击编辑方案...

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

现在,在运行标签中,应该还有另外4个标签(信息参数选项 >和 Diagnostics )-确保您在 Options 标签上!

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

希望这对某人有帮助!