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

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

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

谢谢!

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

有帮助吗?

解决方案

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

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

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

其他提示

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

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

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

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top