【问题标题】:Xcode 6 does not localize Interface BuilderXcode 6 没有本地化 Interface Builder
【发布时间】:2014-09-19 06:49:29
【问题描述】:
Xcode 6 Beta 4 使用 Swift。
我在我的项目中使用本地化,并且我有 Xcode 5 的本地化经验。
使用NSLocalizedString() 对程序代码进行本地化工作正常。
Info.plist 字符串的本地化也可以正常工作。
当从 Interface Builder 本地化字符串时,它仅适用于 Interface Builder 预览,但不适用于模拟器,也不适用于我的设备 (iPhone 5S)。
我是否遗漏了什么或者任何人都可以确认这是 Xcode 6 Beta 4 中的错误?
【问题讨论】:
标签:
objective-c
localization
swift
interface-builder
xcode6
【解决方案1】:
似乎问题出在尺寸等级上。
如果为情节提要启用了“使用大小类”复选框,Xcode 实际上会生成它的 3 个版本 ("<Name>.storyboard", "<Name>~ipad.storyboard" and "<Name>~iphone.storyboard")。
所以 iOS 只是尝试加载名称与活动故事板名称匹配的 .strings 文件(<Name>~iphone.strings,以防应用程序在 iPhone 上运行)。并且无法找到该文件,它会退回到 Base 本地化。
有几种方法可以解决此错误:
- 最明显的一个。只需禁用情节提要的大小类即可。
- 如果您需要尺寸等级,您可以手动将本地化的
<Name>~iphone.strings 和<Name>~ipad.strings 文件添加到项目中并复制您的翻译。
【解决方案2】:
XCode 6 GM 的 Apple 发行说明涵盖了这一点:
本地化:
如果满足以下三个条件,情节提要或 XIB 将无法正确定位:
故事板或 XIB 使用大小类。
基本本地化和构建目标设置为通用。
该构建面向 iOS 7.0。