15

(有类似的问题。有些导致我尝试过但发现不起作用的答案。我认为其他人没有答案,因为询问者没有提供我即将提供的详细信息。)

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

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

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

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

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

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

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

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

4

3 回答 3

9

这是我解决它的方法:

在 viewDidLoad 中:

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

您可以对搜索占位符执行相同操作:

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

然后只需创建一个 Localizable.strings 文件就可以了。

于 2013-06-25T06:52:21.153 回答
7

我的UISegmentedControls也有同样的问题。事实证明,iOS 6 中存在一个错误:.strings 故事板本地化不适用于UISegmentedControl文本和UISearchBar占位符。看到这个开放雷达:http://openradar.appspot.com/radar?id= 2159402

您是否尝试过本地化其他元素,例如UILabels?那应该行得通。

于 2013-02-26T15:36:30.177 回答
0

对于为iOS 7 或更高版本开发并搜索.strings搜索栏格式的人,您应该这样翻译该placeholder字段,例如:

/* Class = "UISearchBar"; normalTitle = "Search for Places"; ObjectID = "F3d-Ir-fni"; */
"F3d-Ir-fni.placeholder" = "Nach Orten suchen";
于 2017-08-01T19:24:25.143 回答