【问题标题】:How can I support other languages using FormFlow?如何使用 FormFlow 支持其他语言?
【发布时间】:2017-01-16 21:26:24
【问题描述】:

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

使用模拟器并将区域设置更改为“es”是有效的: 当我输入“ayuda”时,会显示帮助。没关系。

在 Bot 个人资料页面中,该 bot 以西班牙语发布(使用“es”):

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

当我在 Android 中使用“Estados Unidos - Español”或“España - Español”语言的机器人并用西班牙语输入“ayuda”或其他命令时,机器人会用“'Ayuda' is not [field] 选项”消息,但当输入为“帮助”时,它运行良好。

我有什么遗漏吗?

【问题讨论】:

    标签: botframework


    【解决方案1】:

    我使用 ngrok 来查看 Emulator 和机器人之间交换的消息,使用 Locale 字段(使用 es、es-US、es-PA、es-ES 等)西班牙语的消息正在运行。

    在此之后,我在机器人中编写了一个获取语言环境的小命令,该字段永远返回一个空值(使用 es、en 等)。

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

    activity.Locale = "es-US";
    

    机器人正在按照我的意愿使用西班牙语。

    这是最好的解决方案吗?

    【讨论】:

    • 我不认为这是“最好的解决方案”,但它确实有效!
    【解决方案2】:

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

    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();
        }
    

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

    【讨论】:

    • 我在 bf3, v3.20 上测试过,导致项目失败
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-02-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-02-16
    • 2018-01-24
    • 1970-01-01
    相关资源
    最近更新 更多