故事板+基本本地化+ .strings文件不会在运行时本地化

(也有类似的问题,其中一些导致了我已经尝试过,并且发现不起作用的答案,而其他人没有得到答案,我假设,因为那些问题没有提供像我将要提供的那样多的细节。

我从一个故事板开始,对我的应用程序运行良好; 它包含的string是英文的。 我想添加法语本地化。 我做到了这一点:

  • 添加了基本本地化,将MainStoryboard.storyboarden.lproj转移到Base.lproj
  • 添加了一个法语本地化,将InfoPlist.strings (英文)和MainStoryboard.storyboard (Base)克隆到fr.lproj
  • 在法国的MainStoryboard.storyboard更改了几个string( UISegmentedControl的段名称)。
  • 在模拟器中,将语言设置为法语。
  • 从Xcode运行应用程序。

结果 :这工作; 我在运行的应用程序中显示了更改的string。

但我想成为所有的幻想。 我想用.strings文件做法语本地化。 (这不仅仅是一个花哨的问题,法国本地化将翻译到非技术翻译,谁不能期望掌握界面生成器。)所以:

  • 在Xcode Project导航器中select基本MainStoryboard.storyboard
  • 在“文件”检查器的“本地化”下,将法语本地化从“Interface Builder Cocoa Touch Storyboard”更改为“Localizable Strings”。
  • 接受Xcode的警告,法语故事板将被丢弃,以支持出现在助手编辑器中的.strings文件。
  • 做了两个相同的编辑; 不存在任何错误string的问题,因为它们都被评论为IBUISegmentedControl...segmentTitles ; 并且标签文本不会出现在.strings文件中的任何其他位置。
  • 从模拟器中删除应用程序的现有(工作)副本。
  • 运行应用程序。

结果 :该视图使用基本(本来是英语)本地化,而不是加载法语string。

这并不令人满意。 我尝试从模拟器中删除应用程序,甚至删除派生数据文件夹。 错误依然存在。

正如我所说,我不能把一个.storyboard文件转换成一个非技术性的翻译。 我如何让iOS从.strings文件接受故事板本地化?

我和我的UISegmentedControl有同样的问题。 事实certificate,在iOS 6中有一个错误:.strings故事板本地化不能在UISegmentedControl文本和UISearchBar占位符上工作。 看到这个openradar: http ://openradar.appspot.com/radar?id=2159402

你有尝试本地化其他元素,如UILabel ? 这应该工作。

这是我如何解决它:

在viewDidLoad中:

 [self.segmentedControl setTitle:NSLocalizedString(@"Title", @"Your localize comment") forSegmentAtIndex:0]; 

您可以对search占位符执行相同的操作:

 [self.searchBar setPlaceholder:NSLocalizedString(@"Your string placeholder", @"Your comment for localizers")]; 

然后创build一个Localizable.strings文件,它将工作。

对于为iOS 7或更高版本开发人员以及为search栏search.strings格式的人员,应如何转换placeholder字段,例如:

 /* Class = "UISearchBar"; normalTitle = "Search for Places"; ObjectID = "F3d-Ir-fni"; */ "F3d-Ir-fni.placeholder" = "Nach Orten suchen";