(也有类似的问题。有些问题导致了我已经尝试过并且发现无法工作的答案。其他人没有得到答案,我认为因为这些人并没有提供与我相同的细节。我要去。)
我开始使用适合我的应用的故事板;它包含的字符串是英文的。我想添加法语本地化。我这样做了:
MainStoryboard.storyboard
从en.lproj
到Base.lproj
。InfoPlist.strings
(英文)
并MainStoryboard.storyboard
(基础)加入fr.lproj
。UISegmentedControl
。{/ li>中的MainStoryboard.storyboard
)
结果:这有效;我更改的字符串出现在正在运行的应用程序中。
但我想要充满想象力。我想使用.strings
文件进行法语本地化。 (这不仅仅是一种幻想;法语本地化将转交给非技术翻译人员,他们不能指望他们掌握Interface Builder。)所以:
MainStoryboard.storyboard
导航仪。.strings
文件,该文件出现在“助理编辑器”中。IBUISegmentedControl...segmentTitles
;而且标签文字没有
出现在.strings
文件中的任何其他位置。结果:视图使用基本(原始英语)本地化,而不是加载法语字符串。
这并不令人满意。我尝试从模拟器中删除应用程序,甚至删除了derived-data文件夹。这个bug仍然存在。
正如我所说,我无法将.storyboard
文件转交给非技术翻译。如何让iOS接受.strings
文件中的故事板本地化?
答案 0 :(得分:8)
以下是我解决它的方法:
在viewDidLoad中:
[self.segmentedControl setTitle:NSLocalizedString(@"Title", @"Your localize comment") forSegmentAtIndex:0];
您可以对搜索占位符执行相同操作:
[self.searchBar setPlaceholder:NSLocalizedString(@"Your string placeholder", @"Your comment for localizers")];
然后只需创建一个Localizable.strings文件即可。
答案 1 :(得分:6)
我的UISegmentedControl
遇到了同样的问题。事实证明,iOS 6中存在一个错误:.strings故事板本地化不会在UISegmentedControl
文本和UISearchBar
占位符上工作。
请参阅此openradar:http://openradar.appspot.com/radar?id=2159402
您是否尝试过本地化其他元素,例如UILabel
s?这应该有用。
答案 2 :(得分:0)
对于为 iOS 7或更高版本开发并搜索搜索栏的.strings
格式的人,您应该如何翻译placeholder
字段,例如:< / p>
/* Class = "UISearchBar"; normalTitle = "Search for Places"; ObjectID = "F3d-Ir-fni"; */
"F3d-Ir-fni.placeholder" = "Nach Orten suchen";