Botbuilder如何在命名空间未定义的情况下使用默认语言环境字符串

时间:2017-06-02 02:56:24

标签: node.js locale botframework

我正在使用botbuilder框架。我为我创建的对话框定义了几个名称空间,例如helpdefault。对于所有这些,我还在我的locale/en/目录中创建了json文件,一切都很顺利。 但是,我有一些非常常见的句子,我不想将它们复制到每个单独的命名空间。我已经尝试使用index.json作为'后备',以防命名空间文件没有定义字符串。但它对我不起作用。与documentation似乎暗示的相反。

/locale
  /en
    /help.json
    /default.json
    /index.json <-- Doesn't work
/dialogs
  /help.js
  /default.js
bot.js

假设我在help.js中有以下库:

lib = new builder.Library('help')
lib.dialog('/', (session) => {
  session.send('custom_cancel')
}
module.exports = lib

该库用于bot.js

bot.library(require('./dialogs/help'))

index.json有以下内容:

{
  "custom_cancel": "My custom cancel"
}

help.json为空:

 {}

由于help.json没有custom_cancel,因此机器人实际上会将custom_cancel作为字符串发送。

再次。我可以将字符串粘贴到两个位置,没有问题。但这对我来说似乎是一个难看的解决方案。

1 个答案:

答案 0 :(得分:0)

我尝试了更多explicit版本,这在更多情况下似乎有所帮助,但我还没有完全相信。

session.localizer.gettext(session.preferredLocale(), 'custom_cancel')

您可以使用命名空间的第三个参数。似乎''将指向index.json文件。