是否可以使用C#在Microsoft Bot框架中开发本地化?

时间:2017-02-10 13:05:22

标签: c# botframework

我想要一个支持多种语言的机器人。我知道通过本地化是可能的。但我找不到使用c#的解决方案。 有一篇关于Microsoft Bot框架文档中的本地化的文章。 node.js有一个例子。但我在c#中实现。那么,任何人都可以给我一个想法或任何参考,通过它我可以在c#中实现本地化吗?

3 个答案:

答案 0 :(得分:0)

FormFlow Improved Sandwich Bot有一些C#BotFramework本地化文档。可在此处找到:https://docs.microsoft.com/en-us/bot-framework/dotnet/bot-builder-dotnet-formflow-localize

  

本地化语言由当前线程确定   CurrentUICulture和CurrentCulture。默认情况下,文化来自   当前消息的语言字段,但如果是,则可以更改   你希望。根据您的机器人,最多可以有3种不同的机器人   本地化信息的来源包括:内置本地化   对于PromptDialog和FormFlow。从中生成的资源文件   在表单中找到的静态字符串。您使用的资源文件   用于动态计算字段,消息或确认的字符串。

此页面还引用了IFormBuilder.SaveResource,rview工具以及Multilingual App Toolkit。这些都有助于简化机器人本地化。

答案 1 :(得分:0)

要完全本地化您的机器人,您需要考虑

中的文本
  • 表格流程
  • 提示对话框
  • 发送给用户的正常消息

表格流程本地化文档可在https://docs.microsoft.com/en-us/bot-framework/dotnet/bot-builder-dotnet-formflow-localize找到。

对于提示对话框和普通消息,请为您的默认语言创建一个Resources.resx文件。从那里你可以为其他语言创建另一个resx,例如Resources.fr.resx for french。考虑使用MAT Tool生成Resources.fr.resx。然后将代码更改为指向这些资源文件文本,而不是硬编码文本。看看https://github.com/Microsoft/BotBuilder-Samples/tree/master/CSharp/demo-ContosoFlowers#localization。它的样本正好显示了我提到的内容。

答案 2 :(得分:0)

在您的启动课程中:

public void ConfigureServices(IServiceCollection services)
{
    services.AddLocalization();
}

在您的机器人课程中:

protected override async Task OnMessageActivityAsync(ITurnContext<IMessageActivity> turnContext, CancellationToken cancellationToken)
{
    BotResource.CultureInfo = new CultureInfo("en-GB"); 
    //OR 
    BotResource.CultureInfo = new CultureInfo(turnContext.Activity.Locale); 
}