Cocoa / iPhone:如何让ibtool不在xib文件中输出不可本地化的字符串?

时间:2009-03-05 20:08:06

标签: iphone cocoa localization internationalization

我正在努力国际化iPhone应用程序,我正在使用ibtool从我的xib文件中提取字符串,以便它们可以由本地化的房子翻译,如下所示:

ibtool --generate-strings-file BlahBlahView.strings English.lproj/BlahBlahView.xib

这个问题是我最终的.strings文件包含所有 xib中包含的字符串,当我真正想要我真正关心i18n的子集时。有没有最好的最佳做法来解决这个问题?理想情况下,我希望能够在界面构建器中添加某种注释来表示“这是可本地化的”或“这不可本地化”,并且ibtool在运行时只输出可本地化的字符串。

谢谢!

编辑:好的,让我稍微扩展参数。该解决方案不需要仅使用ibtool。 Ibtool + xib + shell脚本中的一些数据很好。只要它有效!

3 个答案:

答案 0 :(得分:3)

Ibtool在其字符串文件输出中非常冗长,并且通过object-id而不是由唯一的源字符串生成stirng。当您尝试重新创建界面构建器或者需要对xib文件中的对象进行大量控制时,这种类型的输出非常有用,但当您只是想要本地化软件时,这种输出就不那么有用了。

Digitalwaters.net上的Matteo发现了一种方法,可以将ibtool的输出转换为其前身nibtool使用的格式,该格式功能较弱,但更容易用于本地化。更多信息here

我重新设计了他的脚本以简化我们的Mac OS X应用程序的本地化,并且它们对我很有用。祝你好运:)

答案 1 :(得分:1)

我认为您可以自动执行此操作,但这需要几步。您可以使用ibtool从xib中提取任意属性,因此也许您可以将非可本地化项目的标记设置为特定值(例如,-1),然后提取标记并使用它来过滤字符串文件并删除不需要的条目。

查看ibtool的手册页,特别是-export选项。

答案 2 :(得分:0)

ibtool不输出空字符串的条目。因此,例如,如果您将UILabel的文本留空,则它将不会包含在ibtool --generate-strings-file的输出中。然后,您可以在视图控制器中设置元素的文本。