基本本地化 + Storyboard + .strings -> 没有本地化

Posted

技术标签:

【中文标题】基本本地化 + Storyboard + .strings -> 没有本地化【英文标题】:Base localization + Storyboard + .strings -> no localization 【发布时间】:2013-02-26 16:20:32 【问题描述】:

Xcode 4.6,目标 ios 6,SDK iOS 6.1

我从一个适用于我的应用的故事板开始;它包含的字符串是英文的。我想添加法语本地化。我这样做了:

添加了一个基础本地化,它转移了 MainStoryboard.storyboard 从 en.lproj 到 Base.lproj。 添加了法语本地化,它克隆了 InfoPlist.strings(英语) 和 MainStoryboard.storyboard (Base) 到 fr.lproj。 更改了几个字符串(a UISegmentedControl) 在法语 MainStoryboard.storyboard 中。 在模拟器中,将语言设置为法语。 从 Xcode 运行应用程序。

结果:有效;我更改的字符串出现在正在运行的应用程序中。

但我想变得花哨。我想使用 .strings 文件进行法语本地化。 (这不仅仅是花哨的问题;法语本地化将交给非技术翻译人员,他们无法掌握 Interface Builder。)所以:

在 Xcode 项目中选择了基础 MainStoryboard.storyboard 导航器。 在文件检查器的本地化下,更改了法语 从“Interface Builder Cocoa Touch Storyboard”本地化到 “可本地化的字符串。” 接受 Xcode 的警告,即法语情节提要将被丢弃 支持出现在助手编辑器中的 .strings 文件。 进行了相同的两次编辑;毫无疑问他们是错的 字符串,因为它们都被注释为 IBUISegmentedControl...segmentTitles;并且标签文本没有 出现在 .strings 文件中的任何其他位置。 从模拟器中删除了应用程序的现有(工作)副本。 运行应用程序。

结果:视图使用基本(最初是英文)本地化,而不是加载法语字符串。

转换为自动布局没有效果。从模拟器中删除应用程序没有效果。删除派生产品目录没有效果。 Stack Overflow 建议使用 ibtool 生成 .strings 文件而不是 Xcode;生成的两个文件完全相同。

这并不令人满意。正如我所说,我不能将 .storyboard 文件交给非技术翻译。如何让 iOS 接受来自 .strings 文件的情节提要本地化?

【问题讨论】:

【参考方案1】:

使用本地化字符串设置启用英语本地化复选框:

清理您的构建文件夹 (⌥⇧⌘K) 并重新构建。

【讨论】:

【参考方案2】:

我希望你已经解决了。 我遇到了同样的问题(意大利语翻译),我这样解决了:

1) it.lproj 中的文件 Localizable.string

2) 在需要的地方使用 NSLocalizedString(@"TEST", @"comment") 方法

3) 在 Build Phases-> Copy Bundle Resource 中添加 Localizable.string 最后一步在 iOS 5.1 中不是必需的。

感谢 Cocoanetics 在 [question]:Base internationalization and multiple storyboard not working right

中的回复,我解决了

【讨论】:

【参考方案3】:

要添加到claymation关于进行干净构建的答案,它还有助于从iOS模拟器中删除应用程序。

可能和John Hess's answer describes什么有关。

【讨论】:

【参考方案4】:

必须将我的字符串文件转换为情节提要,然后再转换回字符串文件才能使其正常工作。荒谬的。 Apple 可以从 Microsoft 那里学到一两件事,以创建更可靠的开发人员工具。

【讨论】:

我也遇到了同样的情况。 :3

以上是关于基本本地化 + Storyboard + .strings -> 没有本地化的主要内容,如果未能解决你的问题,请参考以下文章

如何使本地化的 Storyboard 或 XIB 保持同步?

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

iOS 多国语言本地化与App内语言切换(Swift)

Xcode 不允许添加国际化

未从Main.Storyboard加载的翻译(英语)

在 Storyboard 上更改 UIButton 的本地化