Cocoa/iPhone:如何防止凳子在 xib 文件中输出不可本地化的字符串?

Posted

技术标签:

【中文标题】Cocoa/iPhone:如何防止凳子在 xib 文件中输出不可本地化的字符串?【英文标题】:Cocoa/iPhone: How to I keep ibtool from outputing non-localizable strings in a xib file? 【发布时间】:2009-03-05 20:08:06 【问题描述】:

我正在对一个 iPhone 应用程序进行国际化,我正在使用 ibtool 从我的 xib 文件中提取字符串,以便它们可以由本地化公司翻译,如下所示:

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

问题在于,当我真的想要 i18n 真正关心的子集时,我最终得到的 .strings 文件包含 所有 xib 中包含的字符串。是否有任何最佳实践来处理这个问题?理想情况下,我希望能够在界面构建器中添加某种注释来说明“这是可本地化的”或“这是不可本地化的”,并且 ibtool 仅在我运行时输出可本地化的字符串。

谢谢!

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

【问题讨论】:

【参考方案1】:

Ibtool 在其字符串文件输出中非常冗长,并通过对象 ID 而不是唯一的源字符串生成搅拌。当您尝试重新创建界面构建器或需要对 xib 文件中的对象进行广泛控制时,这种类型的输出非常有用,但当您只是想本地化您的软件时就不太有用了。

Digitalwaters.net 的 Matteo 找到了一种方法,可以将 ibtool 的输出与 nibtool(其前身)使用的格式相互转换,nibtool 的功能不那么强大,但更容易用于本地化。更多信息here。

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

【讨论】:

引用的链接不再有效。你有缓存的一些信息吗?【参考方案2】:

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

查看 ibtool 的手册页,尤其是 -export 选项。

【讨论】:

【参考方案3】:

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

【讨论】:

以上是关于Cocoa/iPhone:如何防止凳子在 xib 文件中输出不可本地化的字符串?的主要内容,如果未能解决你的问题,请参考以下文章

Cocoa iPhone SDK 开发 - 如果 UIImageView 附加了 CABasicAnimation,则 touchesBegan 方法不起作用

如何防止 UIButton 在触摸时发生变化?

当 XIB 没有时,UIImageView 在模拟器中调整大小

题目荟萃换位置游戏

「CF161B」Discounts

HDU 5894 hannnnah_j’s Biological Test