将某些XIB/Storyboard字符串标记为不可本地化

Lou*_*nco 15 xcode localization storyboard xib ios

我正在使用基本国际化的XIB/Storyboard文件和使用XLIFF文件进行翻译的"导出本地化"方法.

我有一些标签,按钮等具有应翻译的文本,但我也有标签,我们使用一些占位符文本(如全名),以便您可以看到填充数据时视图的样子,但这些标签总是以编程方式来自插座.

有没有办法将此标签的.text属性标记为在XIB中设置为不可本地化,以便它不会在XLIFF(或生成的.strings)文件中结束.

我知道我可以删除文本 - 我还想过有一个前缀(比如@"!DNL!")意味着翻译不应该本地化,但我希望只有一种标准的方法来做到这一点.

Chr*_*lli 6

我在标识选项卡的“本地化注释”字段中添加了注释“ DNL”。然后,我运行以下命令以自动从XLIFF中删除所有这些元素:

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

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

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

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

  • NVM,它位于对象的“文档”部分。效果很好! (2认同)

Wou*_*ter 5

事实证明,从Xcode导出的本地化会忽略情节提要中的属性字符串。

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

在此处输入图片说明

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


Jee*_*hut 4

更新:

看看ReMafoX,它是一款完美解决您问题的 Mac 应用程序。它可以轻松安装并集成到您的项目中,观看此视频以了解详细的演练。

要忽略特定字符串,只需在 Storyboard/XIB 文件的“本地化程序注释”字段中的“Interface Builder”窗格中添加可自定义的忽略标志之一,并且您在上面链接的视频之后配置的构建脚本会将其排除在项目的下一个版本(或按配置中的“更新”按钮)。

配置选项,界面生成器窗格


旧答案:

现在可以使用我最近编写的BartyCrouch命令行实用程序来解决此问题(请参阅对该线程的回答中的安装说明)。

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

请查看GitHub 上 README 中的相关部分以获取详细信息。