ローカライズに関するドキュメントの専用のセクションに見てください:https://docs.microsoft.com/en-us/bot-framework/dotnet/bot-builder-dotnet-formflow-localize
ボットフレームワークが自動的に適切なリソースを選択するために、メッセージからロケールを使用していますが、この情報を上書きすることができます設定することで、あなたのスレッドのCurrentUICulture
とCurrentCulture
、そしてあなたのMessageActivityで理想的にも、あなたのLocale
財産
CultureInfo lang = ...;
Thread.CurrentThread.CurrentCulture = lang;
Thread.CurrentThread.CurrentUICulture = lang;
context.Activity.AsMessageActivity().Locale = lang.ToString();
言語を切り替えるグローバルな解決策がないため、メッセージを送信するスレッドごとにスレッドを設定することを忘れないでください。
あなたがより深く行きたい場合は、ボットフレームワークのソースに外観を持つことができます。
編集: プロンプトの部分については、私がうまく覚えていれば自分自身を作成しなければならなかったpublic abstract class MyPrompt<T, U> : IDialog<T>
、それは一つに:この回答で示唆したように
protected virtual IMessageActivity MakePrompt(IDialogContext context, string prompt, IReadOnlyList<U> options = null, IReadOnlyList<string> descriptions = null, string speak = null)
{
var msg = context.MakeMessage();
// force Culture
CultureInfo lang = ...;
if (lang != null)
{
Thread.CurrentThread.CurrentCulture = lang;
Thread.CurrentThread.CurrentUICulture = lang;
context.Activity.AsMessageActivity().Locale = lang.ToString();
}
if (options != null && options.Count > 0)
{
promptOptions.PromptStyler.Apply(ref msg, prompt, options, descriptions, speak);
}
else
{
promptOptions.PromptStyler.Apply(ref msg, prompt, speak);
}
return msg;
}
:[?マイクロソフトのボットアプリケーションをローカライズする方法](https://stackoverflow.com/a/43290741/6741868)、このラインはあなたを助けるべきである 'スレッド.CurrentThread.CurrentUICulture = CultureInfo.GetCultureInfo( "en-US"); '。これまで私は完全にローカライザーを無効にする方法を見つけていませんでした。 –