Пример #1
0
        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);
            }
        }
Пример #2
0
        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);
        }
Пример #4
0
        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);
        }
Пример #6
0
        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);
        }
Пример #7
0
        // 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);
            }
        }
Пример #8
0
        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);
        }