protected override void RenderContents(HtmlTextWriter writer) { TranslationUtil.ApplyTranslation(this); PermissionUtil.ApplyPermission(this); if (!Enabled) { OnClientClick = String.Empty; } if (!String.IsNullOrWhiteSpace(NavigateUrl)) { hyperLink.RenderControl(writer); } else { base.RenderContents(writer); } }
public static IDictionary <string, List <TranslationItemWithCategory> > LoadNeutralItems() { IDictionary <string, TranslationFile> neutralTranslation = new Dictionary <string, TranslationFile>(); try { // Set language to neutral to get neutral translations GitCommands.AppSettings.CurrentTranslation = ""; var translatableTypes = TranslationUtil.GetTranslatableTypes(); foreach (var(key, types) in translatableTypes) { var translation = new TranslationFile(); try { foreach (Type type in types) { if (TranslationUtil.CreateInstanceOfClass(type) is ITranslate obj) { obj.AddTranslationItems(translation); if (obj is IDisposable disposable) { disposable.Dispose(); } } } } finally { translation.Sort(); neutralTranslation[key] = translation; } } } finally { // Restore translation GitCommands.AppSettings.CurrentTranslation = null; } return(GetItemsDictionary(neutralTranslation)); }
/// <summary> /// POST: api/Messages /// Receive a message from a user and reply to it /// </summary> public async Task <HttpResponseMessage> Post([FromBody] Activity activity) { HttpResponseMessage response; string originalLocale = TranslationUtil.GetDefaultLocale(activity.Locale); try { // Ensure spanish await TranslationUtil.EnsureSpanishTranslation(activity); _channelId = activity.ChannelId; if (!string.IsNullOrEmpty(activity.ServiceUrl)) { _connector = new ConnectorClient(new Uri(activity.ServiceUrl)); } // Get username _userName = GetUserNameOrDefault(activity); if (activity.Type == ActivityTypes.Message) { // Go to MainDialog var dialogInfo = new DialogInfo(activity.ChannelId, _userName, originalLocale); await Microsoft.Bot.Builder.Dialogs.Conversation.SendAsync(activity, () => new MainLUISDialog(dialogInfo)); } else { await HandleSystemMessage(activity); } response = Request.CreateResponse(HttpStatusCode.OK); } catch (Exception ex) { var telemetryClient = new TelemetryClient(); telemetryClient.TrackException(ex); response = Request.CreateResponse(HttpStatusCode.InternalServerError, ex.InnerException.ToString()); } return(response); }
private IMessageActivity BuildDefaultMessage(IDialogContext context, Response response) { IMessageActivity activity = context.MakeMessage(); activity.Locale = TranslationUtil.GetDefaultLocale(activity.Locale); // Set message activity.Text = response.Message; if (response.EndConversation && _context.SurveyCompleted) { foreach (var question in _context.Questions) { var answer = question.Answer; if (!string.IsNullOrEmpty(answer)) { activity.Text += $"\n{question.Subject}: {answer}. "; } } } return(activity); }
private async Task SendWelcomeMessage(Activity activity) { Activity message; string locale = TranslationUtil.GetDefaultLocale(activity.Locale); // Ensure original language var welcomeMessage = await TranslationUtil.ReverseFromSpanishTranslation(string.Format(AlexaBotframework.BotFrameworkBot.Dialogs.MainLUISDialog.Helpers.Constants.Messages.Welcome, _userName), locale); if (_channelId.Contains(Helpers.Constants.Channels.DirectLine)) { var botResponse = new Dialogs.MainLUISDialog.Models.JsonResponse(new Response(welcomeMessage)); botResponse.Intent = ""; var text = JsonConvert.SerializeObject(botResponse); message = activity.CreateReply(text, locale); } else { message = activity.CreateReply(welcomeMessage, locale); } await _connector.Conversations.ReplyToActivityAsync(message); }
protected void mnuLanguages_OnItemClick(object source, MenuItemEventArgs e) { var item = e.Item; if (item == null || String.IsNullOrEmpty(item.Name)) { return; } var pair = item.Name; if (String.Equals(pair, trnModeKey, StringComparison.OrdinalIgnoreCase)) { if (!HasPesmission()) { return; } TranslationUtil.TranslationMode = !TranslationUtil.TranslationMode; item.Text = String.Format("Translation Mode -> ({0})", (TranslationUtil.TranslationMode ? "ON" : "OFF")); return; } if (String.Equals(pair, resetCacheKey, StringComparison.OrdinalIgnoreCase)) { if (!HasPesmission()) { return; } TranslationUtil.ResetCache(); return; } LanguageUtil.SetLanguage(pair); }
// Send response private async Task SendResponse(IDialogContext context, Response response) { IMessageActivity activity; // Ensure original translation DiagnosticsUtil.TraceInformation($"Response locale {_info.Info.Locale}"); response.Message = await TranslationUtil.ReverseFromSpanishTranslation(response.Message, _info.Info.Locale); // Build message switch (_info.Info.ChannelId) { case AlexaBotframework.BotFrameworkBot.Helpers.Constants.Channels.DirectLine: activity = BuildDirectLineMessage(context, response); break; default: activity = BuildDefaultMessage(context, response); break; } // Send response await context.PostAsync(activity); // Check end conversation if (response.EndConversation) { DialogResultType resultType = _context.SurveyCompleted ? DialogResultType.Completed : DialogResultType.Suspended; context.Done(resultType); } else { context.Wait(MessageReceived); } }
public void CreateInstanceOfClass() { UserEnvironmentInformation.Initialise("0123456789012345678901234567890123456789", isDirty: false); var translatableTypes = TranslationUtil.GetTranslatableTypes(); var problems = new List <(string typeName, Exception exception)>(); foreach (var types in translatableTypes.Values) { var translation = new TranslationFile(); foreach (var type in types) { try { using (var obj = (ITranslate)TranslationUtil.CreateInstanceOfClass(type)) { obj.AddTranslationItems(translation); obj.TranslateItems(translation); } } catch (Exception ex) { problems.Add((type.FullName, ex)); } } } if (problems.Count != 0) { Assert.Fail(string.Join( "\n\n--------\n\n", problems.Select(p => $"Problem with type {p.typeName}\n\n{p.exception}"))); } }
private async Task <IMessageActivity> BuildDefaultMessage(IDialogContext context, Response response) { IMessageActivity message = BuildMessage(context); // Set message message.Text = response.Message; // Conversation summary if (response.EndConversation && _context.CurrentIntentType != IntentType.NotReady && _flowType == FlowType.Normal) { message.Text = await TranslationUtil.ReverseFromSpanishTranslation(GetConversationSummary(), TranslationUtil.GetDefaultLocale(_info.Locale)); } return(message); }