如何使用FormFlow支持其他语言?

时间:2016-08-14 05:36:08

标签: botframework

我建立了一个机器人,它运行良好,我正在使用FormFlow来完成调查问卷。我需要使用西班牙语的命令,但它只能用英语(帮助,退出,重置......),但在模拟器中除外。

使用模拟器并将Locale更改为“es”正在运行: Emulator in Spanish 当我输入“ayuda”时,会显示帮助。没关系。

在Bot个人资料页面中,僵尸程序以西班牙语发布(使用“es”): Bot profile in spanish

该机器人在Skype,Facebook Messenger,Slack和Telegram上发布。

当我使用Android中的机器人使用“Estados Unidos - Español”或“España - Español”中的语言并输入西班牙语中的“ayuda”或其他命令时,机器人用英语回答输入“'Ayuda'不是一个[字段]选项“消息,但当输入是”帮助“时,它运行良好。

Skype Android in spanish

我有什么遗失的吗?

2 个答案:

答案 0 :(得分:1)

我使用ngrok查看Emulator和僵尸程序之间交换的消息,使用Locale字段(使用es,es-US,es-PA,es-ES等),西班牙语中的消息正在工作。

在此之后,我在机器人中编写一个小命令以获取Locale,此字段将返回一个空值(使用es,en等)。

最后,我在Post方法的MessagesController中设置了语言环境。

activity.Locale = "es-US";

机器人正在以我想要的西班牙语工作。

这是最好的解决方案吗?

答案 1 :(得分:0)

我遇到了同样的问题。通过在表单构建器中更改线程的文化来修复它:

public static IForm<YourDialogForm> BuildForm()
    {
        System.Threading.Thread.CurrentThread.CurrentCulture = new System.Globalization.CultureInfo("es-AR");
        System.Threading.Thread.CurrentThread.CurrentUICulture = new System.Globalization.CultureInfo("es-AR");
        return new FormBuilder<YourDialogForm>()
            //your code
            .Build();
    }

免责声明:不确定这是否是改变文化的最佳地点