如何使用非基础本地化在 Xcode 中预览 Storyboard

Posted

技术标签:

【中文标题】如何使用非基础本地化在 Xcode 中预览 Storyboard【英文标题】:How to preview Storyboard in Xcode using Non-Base localisation 【发布时间】:2014-04-04 08:07:36 【问题描述】:

我在 Xcode 5.1 中有一个情节提要,基本本地化为英语,第二个本地化为法语。

当我使用 Xcode Storyboard 编辑器时,字符串按预期以英文显示。有什么方法可以让 Xcode 在我的其他本地化(法语)中显示 Storyboard?

我不想更改 Mac OSX 的语言,我希望 Xcode 中的某个地方有一个选项。

编辑:我的资源文件夹中有这个

如果我双击 Main.storyboard,故事板会按预期打开并显示英语(基本语言)。

有没有办法查看 Main.storyboard,但显示 Main.strings 中显示的文本?

编辑: 从那以后我发现(感谢this tutorial)Xcode 中有一个“预览”选项。为此,打开情节提要,单击“助手”编辑器,单击“助手编辑器菜单按钮”(紧邻助手窗口左上角 > 箭头的右侧)并选择预览。这显示了 ViewController 在横向/纵向 568/480 高模式下的外观。非常方便,但仍以英语显示所有内容。

如果这能让我选择一个本地化,那将是检查不同语言的文本布局是否有效的好方法..

【问题讨论】:

forums.macrumors.com/showthread.php?t=1467446 @Vizlix,感谢您的链接,但我在其中看不到解决方案。 如果您愿意在运行时预览它而无需更改设备的语言,试试这个:***.com/a/8596458/1153630 - 然后您可以在想要测试它时切换复选框另一种语言 【参考方案1】:

我相信 Xcode 不准备在使用字符串文件时在 Interface Builder 中显示本地化的故事板。但是,它允许您非常轻松地转换格式。选择您的故事板文件,然后在实用程序面板中,选择您要预览的语言:

将“Localizable Strings”更改为“Interface Build Cocoa Touch Storyboard”:

您现在应该能够选择法语情节提要文件并在 IB 中预览它。

完成后,您可以将文件转换回“可本地化字符串”,反转此过程,或使用您的源代码版本控制系统。然后,您可以通过任何必要的调整来更新基础文件,并再次使用此方法验证它是否符合您的喜好。

【讨论】:

对我来说这个选项不存在,语言名称的右边只有空格,所以我被故事板困住了。知道为什么吗?【参考方案2】:

Xcode 6 现在包含一个功能来执行此操作。

来自What's New in Xcode - New Features in Xcode 6:

在 Interface Builder 中预览。 在 Interface Builder 中进行设计时,预览助手可以显示界面在其他语言中的显示方式。您可以查看您的界面如何响应更长或更短的语言。

万岁!

【讨论】:

【参考方案3】:

只需单击您的故事板文件,您就可以开发它以显示您的本地化故事板。 在您的情况下,如果您使用本地化“基础”选项,您必须看到 3 个故事板文件(一个用于“基础本地化”,一个用于英语,一个用于法语)。 对不起我的英语,但我希望对你有所帮助。

【讨论】:

您好,感谢您的回复。我在“基本本地化”和 fr.lproj/Main.strings 中有一个故事板文件(Main.storyboard)。我正在寻找一种让 Xcode 在编辑 Main.storyboard 时显示 fr.lprog/Main.strings 的方法 如果我理解,我认为在 xcode 中使用本地化的更简单方法是在情节提要下方(开发时)和右侧面板中选择法语本地化,然后在这一个,您可以选择“法语字符串”或将其转换为法语故事板。如果不是你想要的,我很抱歉。 谢谢,但我不太明白。我在问题中添加了一个屏幕截图,可能会有所帮助。

以上是关于如何使用非基础本地化在 Xcode 中预览 Storyboard的主要内容,如果未能解决你的问题,请参考以下文章

SwiftUI项目如何在Xcode预览(Preview)中开启调试支持

SwiftUI项目如何在Xcode预览(Preview)中开启调试支持

如何通过 Fastlane 脚本添加 Xcode 本地化语言

Xcode SwiftUI 如何滚动预览画布?

当我尝试在函数前面添加私有时,Xcode 抱怨“属性私有只能在非本地范围内使用”

Xcode如何在预览(Preview)调试中避免与SwiftUI正常运行时环境不一致导致的崩溃