我的Xcode是v10,我正在针对iOS 12开发SiriKit的自定义意图。
在Xcode 10中,自定义意图是在.intentdefinition文件中设计的,您可以在其中定义意图短语的参数以及意图的标题和该意图的Siri快捷方式。使用.intentdefinition文件构建项目后,Xcode会自动为此意图生成INIntent派生类。
我的问题是,当用户能够操纵自定义意图的快捷方式时,为了支持除英语以外的其他语言,以使意图的标题以系统语言显示在“常规”>“ Siri&Search”中,我需要提供本地化的意图我的.intentdefinition文件的标题。
当我尝试在File Inspector中为.intentdefinition文件添加另一种语言,然后构建项目时,我得到:
duplicate output file '/Users/.../IntentDefinitionGenerated/Intents/MyCustomIntent.swift' on task: IntentDefinitionCodegen /Users/.../ru.lproj/Intents.intentdefinition
之所以可能发生这种情况,是因为Xcode在.lproj
文件夹中看到了多个.intentdefinition文件,并试图为每个文件生成相同的命名类。
如何为iOS 12本地化.intentdefinition文件?
答案 0 :(得分:10)
转到intentdefinition
文件-> File Inspector
-> Select Localize
->现在,为intentdefinition
文件选择当前语言。
这会将您现有的intentdefinition
文件转换为当前语言。
现在再次选择相同的intentdefinition
文件,添加其他语言->它将创建一个新的Intents.strings
文件,您可以在其中自定义其他语言环境的文本。
答案 1 :(得分:2)
似乎您已经本地化了Intent Definition文件(因为Xcode已将其放入ru.lproj
文件夹中),所以问题可能出在“ Compile Sources”中有该文件的两个副本构建阶段。
转到此处:
Project -> App target -> Build Phases -> Compile Sources
,然后查找重复的条目。如果发现重复,请删除其中一个副本
您还可以尝试Editor > Validate Settings…
查找重复项
您也可以尝试清理内部版本
答案 2 :(得分:1)
我遇到了与@ desmond-hume相同的问题。就我而言,我有一个旧的xcode项目,在“ Base”可用之前,该项目已经包含一些本地化版本。初始.intentdefinition文件必须添加为基本本地化。从那里,可以添加进一步的本地化,并且Xcode将为每个本地化仅添加一个.strings文件。
在没有基本本地化的情况下,Xcode为每个本地化添加一个新的.intentdefinition,这会导致“产生多个命令...”错误。
您可以通过复选框在主要项目设置下添加基本本地化。 一些旧项目(例如我的项目)也可能会遇到此问题: iOS - Using Base localization pane is always empty
答案 3 :(得分:0)
我最近已经对我的应用程序的意图进行了本地化,但是在最初的本地化之后,我添加了另一个意图。
至少在我检查过的Xcode 10.2.1中,选择项目的顶层时会有一个“导出为本地化”选项。 它将要求您保存输出。 在调查输出时,应该会看到一个.xcloc文件夹,用于所支持的每种语言。 挖掘到“本地化内容”下的.xliff,然后将其打开。
您将在其中找到这些物品的宝库,并且正在寻找并且正在寻找没有“目标”的物品
dub dub的Apple工程师向我展示了此过程,但是我个人对此过程并不满意,因为您必须对其进行编辑,然后重新导入(假设您将文件发送给翻译人员并获得了.xliff后面。
使用Intents的烦恼在于它使用了任意ID,而不是易读的
我还没有找到一种更简便的方法来查找丢失的翻译。 希望这会有所帮助!