【问题标题】:Marking some XIB/Storyboard strings as not localizable将某些 XIB/Storyboard 字符串标记为不可本地化
【发布时间】:2015-02-09 00:25:46
【问题描述】:

我正在为 XIB/Storyboard 文件使用 Base Internationalization,并为翻译人员使用 XLIFF 文件的“Export for Localization”方法。

我有一些标签、按钮等包含需要翻译的文本,但我也有一些标签,我们在其中使用了一些占位符文本(如全名),因此您可以看到填充后视图的外观带有数据,但这些标签的文本始终以编程方式来自插座。

有没有办法将此标签在 XIB 中设置的 .text 属性标记为不可本地化,这样它就不会出现在 XLIFF(或生成的 .strings)文件中。

我知道我可以删除文本——我还考虑过使用前缀(如@“!DNL!”)来表示翻译人员不应该进行本地化,但我希望只有一种标准方式这样做。

【问题讨论】:

  • 看来这是不可能的。我提交了一个雷达(19232051),以防将来有人遇到这个问题并想看看它是否得到实施。

标签: ios xcode localization storyboard xib


【解决方案1】:

我将注释“DNL”添加到身份选项卡中的“本地化器注释”字段。然后,我运行此命令以自动从 XLIFF 中删除所有这些元素:

xmlstarlet ed -d "//*[contains(text(), 'Note = \"DNL\"')]/.." en.xliff > out.xliff

基本上,它使用xmlstarlet(可以通过自制软件下载)来查找包含文本Note = "DNL" 的所有元素,然后从XLIFF 中删除该元素的父元素。

结合使用xcodebuild -exportLocalizations,您可以制作一个非常简单的脚本来生成您的 XLIFF:

xcodebuild -exportLocalizations -localizationPath build -project ProjectName.xcodeproj
xmlstarlet ed -d "//*[contains(text(), 'Note = \"DNL\"')]/.." build/en.xliff > build/out.xliff 

【讨论】:

  • “本地化器评论”字段是什么意思?那是 XCode 中的一个字段吗?找不到。
  • NVM,它位于对象的 document 部分。效果很好!
【解决方案2】:

事实证明,来自 Xcode 的本地化导出忽略了故事板中的属性字符串。

因此,只需在 Attributes Inspector 中将要排除的每个标签/按钮的文本类型设置为 Attributed

这将为您提供属性字符串而不是普通字符串,据我所知,除了现在必须保存在内存中的(空)属性列表之外,这没有任何含义。

【讨论】:

  • 这不包括某些情况,例如导航项文本,因为没有选项可以从属性检查器中将类型设置为“属性”。
【解决方案3】:

现在可以使用我最近编写的用于解决this problemBartyCrouch 命令行实用程序(请参阅该线程上my answer 中的安装说明)。

BartyCrouch 为您运行 ibtool 并在其生成的 .strings 文件之上进行额外处理。如果您将 #bc-ignore! 包含在您的值或您的基本国际化 Storyboard/XIB 文件中的评论中,它将从翻译中排除视图。

请查看related section within the README on GitHub了解详细信息。

【讨论】:

  • BartyCrouch 规则!
猜你喜欢
  • 2013-05-31
  • 2012-02-09
  • 2015-10-28
  • 2013-10-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-12-27
相关资源
最近更新 更多