我有一个使用英文用户界面设计的应用程序,还有一个德语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">
任何提示?
答案 0 :(得分:1)
尝试在您的Info.plist中将CFBundleAllowMixedLocalizations
设置为yes
答案 1 :(得分:1)
对我来说,我必须编辑方案。在“构建/运行和停止”按钮旁边,单击您的应用程序,然后单击编辑方案...
在弹出的窗口中,确保您位于“运行”选项卡上。
现在,在运行标签中,应该还有另外4个标签(信息,参数,选项 >和 Diagnostics )-确保您在 Options 标签上!
在选项标签中,向下滚动,您应该看到应用语言。在我的情况下,为西班牙语设置了应用程序语言,因此无论如何,我的应用程序都将使用西班牙语进行本地化。将应用程序语言更改为系统语言可以使构建按预期工作,并且可以使用我的设备当时使用的任何语言。
希望这对某人有帮助!