2017-05-25 120 views
2

首先,抱歉,因爲我不會說英語。 在這一刻,我正在研究一個帶有微軟bot框架的機器人,我們有一個簡單的問題。 我們需要有選擇英語或西班牙語的可能性。我們製作了resx文件並且它可以工作......但是當我們同時從兩個渠道嘗試時,機器人就像一個獨家實體一樣工作......如果我將西班牙文放在電報中,並且我的同事放了英文,那麼我的文本和按鈕就會出現英語。 我們嘗試在機器人開始時製作一個簡單的標誌,並強制它以英語開始,因爲cortana只能在英語中運行......但問題仍然存在。 Cortana試圖用英語說我們的西班牙文文本... 我們如何強制一個用戶的所有「會話」使用相同的語言,而不會影響其他用戶? 感謝Bot框架本地化語言

+0

什麼版本的機器人框架SDK您使用的是? –

+0

我們使用的是3.8.1版本 –

+0

本地化應該按預期運行(基於當前線程的CurrentUiCulture和CurrentCulture)。請發佈您的代碼的簡化版本。 –

回答

0

我認爲要做到這一點使用Strings.resx文件最簡單的方式是如此(任何對話框中):

 public Task StartAsync(IDialogContext context) 
     { 
      context.PostAsync($"Hi!"); 
      PromptDialog.Choice(context, 
       HandleLang, 
       new[] { "English", "Espanol"}, 
       "Please select a language:", 
       "I didn't get that"); 
      return Task.CompletedTask; 
     } 


     public async Task HandleLang(IDialogContext context, IAwaitable<string> result) 
     { 
      string lang = await result as string; 
      switch (lang) 
      { 
       case "English": 
        Strings.Culture = new CultureInfo("en-US"); 
        break; 
       case "Espanol": 
        Strings.Culture = new CultureInfo("es-ES"); 
        break; 
       default: 
        break; 
      } 
      ... do whatever here 
     }