在构建 VCD 时,您可以像这样定义语言:
<CommandSet xml:lang="en-US">
...
</CommandSet>
<CommandSet xml:lang="ja-JP">
...
</CommandSet>
我的问题是,如果我希望多种语言使用相同的 CommandSet(例如en-US
and en-GB
),是否可以不复制/粘贴?
在构建 VCD 时,您可以像这样定义语言:
<CommandSet xml:lang="en-US">
...
</CommandSet>
<CommandSet xml:lang="ja-JP">
...
</CommandSet>
我的问题是,如果我希望多种语言使用相同的 CommandSet(例如en-US
and en-GB
),是否可以不复制/粘贴?
编辑:此答案中列出的选项不起作用。似乎避免 VCD 多语言复制粘贴的最好方法是使用 T4 模板生成 VCD 是编译时间。
是的,这实际上很简单。只要您没有命令集重叠,您就可以为整个语言创建命令集,而无需提及特定区域。请记住,xml:lang
它是一个通用 XML 属性,您可以利用它来发挥自己的优势。
在下面的代码片段中,我们将指定一个en
(英语)语音命令集,而无需提及特定区域。
<?xml version="1.0" encoding="utf-8"?>
<VoiceCommands xmlns="http://schemas.microsoft.com/voicecommands/1.0">
<CommandSet xml:lang="en">
<Example> English example </Example>
<!-- ... -->
</CommandSet>
<CommandSet xml:lang="es-ES">
<Example> Non-english example </Example>
<!-- ... -->
</CommandSet>
</VoiceCommands>
当我们运行这个代码片段时,我们可以看到不同的示例文本出现在不同的模拟器中:
这里的一个限制是您不能同时拥有一个xml:lang="en"
CommandSet 和特定于区域的英语 CommandSet(例如xml:lang="en-us"
)。对于绝大多数应用程序来说,这很好。但是,如果您要嵌入特定区域的 PhraseList,则必须使用替代策略(例如,由于版权限制,仅在特定区域可用的电影列表)。我以前见过的一种选择是生成 VCD 文件的 T4 模板,而不是重复复制粘贴 VCD 文件。
这已经不可能了。对于 WP8.1,您必须提供 xml:lang。