本地化自定义SiriKit意图

Des*_*ume 11 xcode localization ios sirikit

我的Xcode是v10,我正在开发针对iOS 12的SiriKit的自定义意图.

在Xcode 10中,自定义意图是在.intentdefinition文件中设计的,您可以在其中为意图短语定义自己的参数,以及意图的标题和该意图的Siri快捷方式.使用.intentdefinition文件构建项目会使Xcode自动为该意图生成INIntent派生类.

我的问题是,为了支持除英语之外的其他语言,以便当用户能够操作自定义意图的快捷方式时,意图的标题以系统的语言显示在General> Siri&Search中,我需要为我提供本地化的意图标题.intentdefinition文件.

当我尝试在文件检查器中为我的.intentdefinition文件添加另一种语言然后构建项目时,我得到:

duplicate output file '/Users/.../IntentDefinitionGenerated/Intents/MyCustomIntent.swift' on task: IntentDefinitionCodegen /Users/.../ru.lproj/Intents.intentdefinition

这很可能发生,因为Xcode在.lproj文件夹中看到多个.intentdefinition文件,并尝试为每个文件生成相同的命名类.

如何本地化iOS 12的.intentdefinition文件?

Noo*_*oor 12

转到intentdefinition文件 - > File Inspector- > Select Localize- >现在选择intentdefinition文件的当前语言.这会将您现有的intentdefinition文件转换为当前语言.

现在再次选择相同的intentdefinition文件,添加其他语言 - >它将创建一个新Intents.strings文件,您可以在其中自定义其他语言环境的文本.

本地化的Intents.intentdefinition文件

本地化后的Intents.intentdefinition文件

  • 不起作用。它会产生编译器错误:显示最近的消息:-1:多个命令产生'.../SiriIntentsExtension.build/Objects-normal/arm64/NIIntentClassName.o':1)目标'SiriIntentsExtension'(项目'project')已编译Swift 源文件的命令 2) 目标“SiriIntentsExtension”(项目“priject”)具有 Swift 源文件的编译命令 (4认同)
  • 有人知道,如果您按照上述步骤操作,然后在以后的某个时间点将一些字符串添加到意图定义文件中,如何将这些添加的字符串添加到本地化字符串文件中? (3认同)
  • @Muxor我所做的是删除所有本地化(取消选中复选框,删除文件),然后再次添加它们(通过选中复选框)。如果您使用 git 或其他一些源代码控制,您应该能够看到发生了什么变化。 (3认同)

Eri*_*ieh 7

我和@desmond-hume 有同样的问题。就我而言,我有一个旧的 xcode 项目,在“Base”可用之前它已经包含了一些本地化。初始 .intentdefinition 文件必须添加为基本本地化。从那里,可以添加进一步的本地化,Xcode 将为每个本地化仅添加一个 .strings 文件。

如果没有基本本地化,Xcode 会为每个本地化添加一个新的 .intentdefinition,这会导致“多个命令产生......”错误。

您可以通过复选框在主项目设置下添加基本本地化。一些旧项目(例如我的)也可能遇到此问题: iOS - 使用基本本地化窗格始终为空