3

在构建 VCD 时,您可以像这样定义语言:

<CommandSet xml:lang="en-US">
  ...
</CommandSet>

<CommandSet xml:lang="ja-JP">
  ...
</CommandSet>

我的问题是,如果我希望多种语言使用相同的 CommandSet(例如en-USand en-GB),是否可以不复制/粘贴?

4

2 回答 2

2

编辑:此答案中列出的选项不起作用。似乎避免 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>

当我们运行这个代码片段时,我们可以看到不同的示例文本出现在不同的模拟器中:

带有 es-ES 文本的语音命令 带有文本的 VoiceCommand

这里的一个限制是您不能同时拥有一个xml:lang="en"CommandSet 和特定于区域的英语 CommandSet(例如xml:lang="en-us")。对于绝大多数应用程序来说,这很好。但是,如果您要嵌入特定区域的 PhraseList,则必须使用替代策略(例如,由于版权限制,仅在特定区域可用的电影列表)。我以前见过的一种选择是生成 VCD 文件的 T4 模板,而不是重复复制粘贴 VCD 文件。

于 2012-12-28T08:00:30.007 回答
0

这已经不可能了。对于 WP8.1,您必须提供 xml:lang。

于 2015-01-16T18:14:18.690 回答