public void Should_Set_TranslationArgs()
        {
            var translations = new Dictionary <string, IReadOnlyDictionary <string, string> >
            {
                ["translation1"] = new Dictionary <string, string>
                {
                    ["key11"] = "message11",
                    ["key12"] = "message12"
                },
                ["translation2"] = new Dictionary <string, string>
                {
                    ["key21"] = "message21"
                },
            };

            var translator = new MessageTranslator(translations);

            translator.TranslationArgs.Should().NotBeEmpty();
            translator.TranslationArgs.Count.Should().Be(2);

            translator.TranslationArgs.Keys.Should().Contain("translation1");

            translator.TranslationArgs["translation1"].Length.Should().Be(1);
            translator.TranslationArgs["translation1"][0].Should().BeAssignableTo <TranslationArg>();
            translator.TranslationArgs["translation1"][0].Name.Should().Be("_translation");

            translator.TranslationArgs["translation1"][0].ToString(new Dictionary <string, string>()
            {
                ["key"] = "key11"
            }).Should().Be("message11");

            translator.TranslationArgs["translation1"][0].ToString(new Dictionary <string, string>()
            {
                ["key"] = "key12"
            }).Should().Be("message12");

            translator.TranslationArgs["translation1"][0].ToString(new Dictionary <string, string>()
            {
                ["key"] = "key21"
            }).Should().Be("key21");

            translator.TranslationArgs["translation2"].Length.Should().Be(1);
            translator.TranslationArgs["translation2"][0].Should().BeAssignableTo <TranslationArg>();
            translator.TranslationArgs["translation2"][0].Name.Should().Be("_translation");

            translator.TranslationArgs["translation2"][0].ToString(new Dictionary <string, string>()
            {
                ["key"] = "key11"
            }).Should().Be("key11");

            translator.TranslationArgs["translation2"][0].ToString(new Dictionary <string, string>()
            {
                ["key"] = "key12"
            }).Should().Be("key12");

            translator.TranslationArgs["translation2"][0].ToString(new Dictionary <string, string>()
            {
                ["key"] = "key21"
            }).Should().Be("message21");
        }
        public static async Task PostTranslatedAsync(this IDialogContext context, string message, bool sendTyping = true, int delay = 0)
        {
            if (sendTyping)
            {
                if (delay == 0)
                {
                    //generate random delay from 1 second to 4 seconds...
                    delay = rnd.Next(1, 4) * 1000;
                }

                await PostTypingAsync(context, delay);
            }

            string language;

            if (context.UserData.TryGetValue(Constants.Shared.UserLanguageCodeKey, out language) && language != MessageTranslator.DEFAULT_LANGUAGE)
            {
                var translatedMessage = await MessageTranslator.TranslateTextAsync(message, language);

                await context.PostAsync(translatedMessage);

                return;
            }
            else
            {
                await context.PostAsync(message);

                return;
            }
        }
Example #3
0
    public static void Interpret(IPEndPoint source, Message message, NetworkMessage network)
    {
        NetworkCommon networkCommon = GameObject.FindObjectOfType <Network> ().NetworkCommon;

        switch (network.Message)
        {
        case NetworkMessage.MessageValue.CONNECT:
            if (networkCommon is NetworkServer && networkCommon.ID == message.DestID)
            {
                (networkCommon as NetworkServer).Send(source, MessageTranslator.ToByteArray(
                                                          createMessage(networkCommon.ID,
                                                                        message.SourceID,
                                                                        NetworkMessage.MessageValue.CONNECTED)));
                networkCommon.Connected = true;
                Application.LoadLevel(1);
            }
            break;

        case NetworkMessage.MessageValue.CONNECTED:
            if (networkCommon is NetworkClient && networkCommon.ID == message.DestID)
            {
                networkCommon.Connected = true;
                Application.LoadLevel(1);
            }
            break;
        }
    }
        private async Task AfterLessonFinished(IDialogContext context, IAwaitable <string> result)
        {
            // TODO: inject dependency
            var badgeRepository = new Gamification.BadgeRepository();
            var updatedProfile  = GetUserGamerProfile(context);
            var user            = context.GetUserData();

            updatedProfile.Points += _pointsPerLesson;
            var newBadges = badgeRepository.GetEligibleBadges(updatedProfile, _userPointsBeforeLessonPlan);

            updatedProfile.Badges.AddRange(newBadges);

            if (newBadges != null && newBadges.Any())
            {
                var tasks = newBadges.Select(async badge =>
                {
                    AdaptiveCard adaptiveCard = new AdaptiveCard()
                    {
                        Body = new List <CardElement>()
                        {
                            new Image()
                            {
                                Size = ImageSize.Medium,
                                Url  = "https://www.kastatic.org/images/badges/meteorite/thumbs-up-512x512.png"
                            },
                            new TextBlock()
                            {
                                Text = await MessageTranslator.TranslateTextAsync($"You unlocked {badge}", user?.NativeLanguageIsoCode),
                                Size = TextSize.Large,
                                Wrap = true
                            }
                        }
                    };

                    Attachment attachment = new Attachment()
                    {
                        ContentType = AdaptiveCard.ContentType,
                        Content     = adaptiveCard
                    };

                    var reply = context.MakeMessage();
                    reply.Attachments.Add(attachment);

                    await context.PostAsync(reply, CancellationToken.None);
                });

                await Task.WhenAll(tasks);
            }

            // The current lesson finished. Plug in Analytics.
            var finalMessage = await result;
            await context.PostAsync(finalMessage);

            // Refactor
            var updatedUserData = context.GetUserData();

            updatedUserData.GamerProfile = updatedProfile;
            context.UpdateUserData(updatedUserData);
            context.Done(string.Empty);
        }
    public static void Send(GameplayMessage.MessageValue messageValue, int id, Vector2 delta, Vector3 originalPosition)
    {
        Network network = GameObject.FindObjectOfType <Network>();

        if (network == null)
        {
            return;
        }

        NetworkCommon networkCommon = network.NetworkCommon;

        if (networkCommon == null)
        {
            return;
        }

        Message m = createMessage(networkCommon.ID,
                                  1 - networkCommon.ID,
                                  messageValue,
                                  id,
                                  delta,
                                  originalPosition);

        if (networkCommon is NetworkClient)
        {
            (networkCommon as NetworkClient).Send(null, MessageTranslator.ToByteArray(m));
        }
        else
        {
            (networkCommon as NetworkServer).Broadcast(MessageTranslator.ToByteArray(m));
        }
    }
        public async Task StartAsync(IDialogContext context)
        {
            var _oldGamerProfile = GetUserGamerProfile(context);

            _userPointsBeforeLessonPlan = _oldGamerProfile.Points;
            var    user             = context.GetUserData();
            string friendlyUserName = user?.UserName;

            ICollection <string> lessonTitle = new List <string>();

            // get up to 5 lessons
            int i = 0;

            foreach (Lesson lesson in LessonPlanModule.LessonPlan.Lessons)
            {
                if (i >= 7)
                {
                    break;
                }

                //var lessonInNativaLanguage = await MessageTranslator.TranslateTextAsync(lesson.LessonTitle, user?.NativeLanguageIsoCode);
                lessonTitle.Add(lesson.LessonTitle);
                i++;
            }

            var questionInNativeLanguage = await MessageTranslator.TranslateTextAsync($"Which lesson would you like to start?", user?.NativeLanguageIsoCode);

            PromptDialog.Choice(
                context,
                this.AfterLessonSelected,
                lessonTitle,
                $"{questionInNativeLanguage}",
                Shared.DoNotUnderstand,
                attempts: Shared.MaxPromptAttempts);
        }
Example #7
0
        /// <summary>
        /// 初始化所有对象,并初始化类
        /// </summary>
        public void Init()
        {
            Client       = new UDPThread(_client);                                //文本网络对象
            LivedHost    = new OnlineHost(this.Config);                           //主机列表
            MessageProxy = new MessageTranslator(Client, this.Config, LivedHost); //文本信息翻译层对象

            //自动查询主机客户端版本
            LivedHost.HostOnline += (s, e) =>
            {
                if (Config.AutoDetectVersion)
                {
                    this.GetVersion(e.Host);
                }
            };

            //文件传输
            FileTaskManager = new FileTaskManager(this.Config);
            FileTaskManager.FileReceiveTaskDiscarded += (s, e) => this.SendReleaseFilesSignal(e.TaskInfo.RemoteHost, e.TaskInfo.PackageID);
            FileTaskModule = new FSLib.IPMessager.Network.TCPThread(_client)
            {
                TaskManager = FileTaskManager
            };


            //与接收消息进行挂钩
            MessageProxy.MessageReceived += MessageProxy_MessageReceived;
        }
Example #8
0
        public override void OnInspectorGUI()
        {
            MessageTranslator targetTranslator = (MessageTranslator)target;

            for (int i = 0; i < targetTranslator.translations.Count; i++)
            {
                Translation t = targetTranslator.translations[i];

                EditorGUILayout.BeginHorizontal();
                t.From = EditorGUILayout.TextField(t.From);
                EditorGUILayout.LabelField("=>", GUILayout.Width(20));
                t.To = EditorGUILayout.TextField(t.To);
                bool remove = GUILayout.Button("-", GUILayout.Width(25));
                EditorGUILayout.EndHorizontal();

                if (remove)
                {
                    targetTranslator.translations.RemoveAt(i);
                    i--;
                }
            }

            EditorGUILayout.BeginHorizontal();
            GUILayout.Label("", GUILayout.ExpandWidth(true));
            bool add = GUILayout.Button("+", GUILayout.Width(25));

            GUILayout.Label("", GUILayout.ExpandWidth(true));
            GUILayout.Label("", GUILayout.Width(25));
            EditorGUILayout.EndHorizontal();

            if (add)
            {
                targetTranslator.translations.Add(new Translation());
            }
        }
        public void Should_Set_Translations_WithoutModification()
        {
            var translations = new Dictionary <string, IReadOnlyDictionary <string, string> >
            {
                ["translation1"] = new Dictionary <string, string>
                {
                    ["key1"] = "message1",
                    ["key2"] = "message2"
                },
                ["translation2"] = new Dictionary <string, string>
                {
                    ["key3"] = "message3",
                    ["key4"] = "message4"
                }
            };

            var translator = new MessageTranslator(translations);

            translator.Translations.Keys.Should().Contain("translation1");
            translator.Translations.Keys.Count().Should().Be(2);

            translator.Translations["translation1"].Keys.Count().Should().Be(2);
            translator.Translations["translation1"].Keys.Should().Contain("key1");
            translator.Translations["translation1"]["key1"].Should().Be("message1");

            translator.Translations["translation1"].Keys.Should().Contain("key2");
            translator.Translations["translation1"]["key2"].Should().Be("message2");

            translator.Translations["translation2"].Keys.Count().Should().Be(2);
            translator.Translations["translation2"].Keys.Should().Contain("key3");
            translator.Translations["translation2"]["key3"].Should().Be("message3");

            translator.Translations["translation2"].Keys.Should().Contain("key4");
            translator.Translations["translation2"]["key4"].Should().Be("message4");
        }
            public void Should_Translate_And_UseArgs_WithParameters()
            {
                var translations = new Dictionary <string, IReadOnlyDictionary <string, string> >
                {
                    ["translation1"] = new Dictionary <string, string>
                    {
                        ["key1"] = "message1 {arg1|case=upper} {arg1|case=lower}"
                    }
                };

                var translator = new MessageTranslator(translations);

                var error = new Error()
                {
                    Messages = new[]
                    {
                        "key1",
                    },
                    Args = new IArg[]
                    {
                        Arg.Text("arg1", "arg1Value"),
                    }
                };

                var result = translator.TranslateMessages("translation1", error);

                result.Messages.Count.Should().Be(1);
                result.Messages.Should().Contain("message1 ARG1VALUE arg1value");

                result.AnyPathPlaceholders.Should().Be(false);
                result.IndexedPathPlaceholders.Should().BeEmpty();
            }
        private async Task AskToStartLessonPlan(IDialogContext context)
        {
            var possibleResponses = new List <string>()
            {
                BotPersonality.GetStartLessonPlanQuestion(),
                BotPersonality.BotResponseToGibberish
            };

            IReadOnlyCollection <string> translatedResponses;
            string language;

            if (context.UserData.TryGetValue(Constants.Shared.UserLanguageCodeKey, out language) && language != MessageTranslator.DEFAULT_LANGUAGE)
            {
                translatedResponses = await MessageTranslator.TranslateTextAsync(possibleResponses, language);
            }
            else
            {
                translatedResponses = possibleResponses;
            }

            PromptDialog.Confirm(
                context,
                TryStartLessonPlan,
                translatedResponses.ElementAtOrDefault(0) ?? string.Empty,
                translatedResponses.ElementAtOrDefault(1) ?? string.Empty);
        }
            public void Should_ThrowException_When_TranslationNameNotFound()
            {
                var translations = new Dictionary <string, IReadOnlyDictionary <string, string> >
                {
                    ["translation1"] = new Dictionary <string, string>
                    {
                        ["key1"] = "message1"
                    },
                    ["translation2"] = new Dictionary <string, string>
                    {
                        ["key2"] = "message2"
                    }
                };

                var translator = new MessageTranslator(translations);

                var error = new Error()
                {
                    Messages = new[]
                    {
                        "key1"
                    },
                    Args = new IArg[] { }
                };

                Action action = () => translator.TranslateMessages("translation3", error);

                action.Should().ThrowExactly <KeyNotFoundException>();
            }
            public void Should_Translate_ReturnSameMessage_When_KeyInTranslation()
            {
                var translations = new Dictionary <string, IReadOnlyDictionary <string, string> >
                {
                    ["translation1"] = new Dictionary <string, string>
                    {
                        ["key1"] = "message1"
                    },
                    ["translation2"] = new Dictionary <string, string>
                    {
                        ["key1"] = "message2"
                    }
                };

                var translator = new MessageTranslator(translations);

                var error = new Error()
                {
                    Messages = new[]
                    {
                        "key123"
                    },
                    Args = new IArg[]
                    {
                    }
                };

                var result = translator.TranslateMessages("translation2", error);

                result.Messages.Count.Should().Be(1);
                result.Messages.Should().Contain("key123");

                result.AnyPathPlaceholders.Should().Be(false);
                result.IndexedPathPlaceholders.Should().BeEmpty();
            }
            public void Should_Translate_WithPathArgs_And_Leave_When_MissingPlaceholders()
            {
                var errorMessages = new[]
                {
                    "message1",
                    "message2 {_name} {_path}",
                    "message3",
                    "message4 {_name}",
                    "message5 {_path}",
                };

                var indexedPathsPlaceholders = new Dictionary <int, IReadOnlyList <ArgPlaceholder> >()
                {
                    [1] = new[]
                    {
                        ParameterlessNamePlaceholders,
                    },
                    [4] = new[]
                    {
                        ParameterlessPathPlaceholders
                    }
                };

                var results = MessageTranslator.TranslateMessagesWithPathPlaceholders("some.path", errorMessages, indexedPathsPlaceholders);

                results.Count.Should().Be(5);

                results[0].Should().Be("message1");
                results[1].Should().Be("message2 path {_path}");
                results[2].Should().Be("message3");
                results[3].Should().Be("message4 {_name}");
                results[4].Should().Be("message5 some.path");
            }
            public void Should_ThrowException_When_NullTranslationName()
            {
                var translations = new Dictionary <string, IReadOnlyDictionary <string, string> >
                {
                    ["translation1"] = new Dictionary <string, string>
                    {
                        ["key1"] = "message1"
                    },
                    ["translation2"] = new Dictionary <string, string>
                    {
                        ["key2"] = "message2"
                    }
                };

                var translator = new MessageTranslator(translations);

                var error = new Error()
                {
                    Messages = new[]
                    {
                        "key1"
                    }
                };

                Action action = () => translator.TranslateMessages(null, error);

                action.Should().ThrowExactly <ArgumentNullException>();
            }
            public void Should_ThrowException_When_Error_ContainsNullArg()
            {
                var translations = new Dictionary <string, IReadOnlyDictionary <string, string> >
                {
                    ["translation1"] = new Dictionary <string, string>
                    {
                        ["key1"] = "message1"
                    },
                    ["translation2"] = new Dictionary <string, string>
                    {
                        ["key2"] = "message2"
                    }
                };

                var translator = new MessageTranslator(translations);

                var error = new Error()
                {
                    Messages = new[]
                    {
                        "key1",
                    },
                    Args = new IArg[]
                    {
                        Arg.Text("test", "test"),
                        null
                    }
                };

                Action action = () => translator.TranslateMessages("translation1", error);

                action.Should().ThrowExactly <ArgumentNullException>();
            }
        public void Should_Set_TranslationNames()
        {
            var translations = new Dictionary <string, IReadOnlyDictionary <string, string> >
            {
                ["translation1"] = new Dictionary <string, string>
                {
                    ["key1"] = "message1"
                },
                ["translation2"] = new Dictionary <string, string>
                {
                    ["key2"] = "message2"
                },
                ["translation3"] = new Dictionary <string, string>
                {
                    ["key3"] = "message3"
                },
                ["translation4"] = new Dictionary <string, string>
                {
                    ["key4"] = "message4"
                }
            };

            var translator = new MessageTranslator(translations);

            translator.TranslationNames.Should().NotBeNull();
            translator.TranslationNames.Count.Should().Be(4);

            translator.TranslationNames.Should().Contain("translation1");
            translator.TranslationNames.Should().Contain("translation2");
            translator.TranslationNames.Should().Contain("translation3");
            translator.TranslationNames.Should().Contain("translation4");
        }
            public void Should_Translate_And_UseArgs_Special_Translation_Recursion()
            {
                var translations = new Dictionary <string, IReadOnlyDictionary <string, string> >
                {
                    ["translation1"] = new Dictionary <string, string>
                    {
                        ["key1"] = "message1 {_translation|key=key1}",
                    }
                };

                var translator = new MessageTranslator(translations);

                var error = new Error()
                {
                    Messages = new[]
                    {
                        "key1",
                    },
                    Args = new IArg[]
                    {
                    }
                };

                var result = translator.TranslateMessages("translation1", error);

                result.Messages.Count.Should().Be(1);
                result.Messages.Should().Contain("message1 message1 {_translation|key=key1}");

                result.AnyPathPlaceholders.Should().Be(false);
                result.IndexedPathPlaceholders.Should().BeEmpty();
            }
            public void Should_Translate_And_ExtractPathPlaceholders()
            {
                var translations = new Dictionary <string, IReadOnlyDictionary <string, string> >
                {
                    ["translation1"] = new Dictionary <string, string>
                    {
                        ["key1"] = "message1",
                    }
                };

                var translator = new MessageTranslator(translations);

                var error = new Error()
                {
                    Messages = new[]
                    {
                        "key1",
                        "message with path: {_path}",
                        "message with name: {_name}",
                        "message with path and name: {_path} {_name}",
                    },
                    Args = new IArg[]
                    {
                    }
                };

                var result = translator.TranslateMessages("translation1", error);

                result.Messages.Count.Should().Be(4);
                result.Messages.ElementAt(0).Should().Be("message1");
                result.Messages.ElementAt(1).Should().Be("message with path: {_path}");
                result.Messages.ElementAt(2).Should().Be("message with name: {_name}");
                result.Messages.ElementAt(3).Should().Be("message with path and name: {_path} {_name}");

                result.AnyPathPlaceholders.Should().Be(true);
                result.IndexedPathPlaceholders.Count.Should().Be(3);

                result.IndexedPathPlaceholders.Keys.Should().Contain(1);
                result.IndexedPathPlaceholders.Keys.Should().Contain(2);
                result.IndexedPathPlaceholders.Keys.Should().Contain(3);

                result.IndexedPathPlaceholders[1].Count.Should().Be(1);
                result.IndexedPathPlaceholders[1].ElementAt(0).Name.Should().Be("_path");
                result.IndexedPathPlaceholders[1].ElementAt(0).Placeholder.Should().Be("{_path}");
                result.IndexedPathPlaceholders[1].ElementAt(0).Parameters.Should().BeEmpty();

                result.IndexedPathPlaceholders[2].Count.Should().Be(1);
                result.IndexedPathPlaceholders[2].ElementAt(0).Name.Should().Be("_name");
                result.IndexedPathPlaceholders[2].ElementAt(0).Placeholder.Should().Be("{_name}");
                result.IndexedPathPlaceholders[2].ElementAt(0).Parameters.Should().BeEmpty();

                result.IndexedPathPlaceholders[3].Count.Should().Be(2);
                result.IndexedPathPlaceholders[3].ElementAt(0).Name.Should().Be("_path");
                result.IndexedPathPlaceholders[3].ElementAt(0).Placeholder.Should().Be("{_path}");
                result.IndexedPathPlaceholders[3].ElementAt(0).Parameters.Should().BeEmpty();
                result.IndexedPathPlaceholders[3].ElementAt(1).Name.Should().Be("_name");
                result.IndexedPathPlaceholders[3].ElementAt(1).Placeholder.Should().Be("{_name}");
                result.IndexedPathPlaceholders[3].ElementAt(1).Parameters.Should().BeEmpty();
            }
Example #20
0
        private async Task UserNameReceivedInNativeLanguageAsync(IDialogContext context, IAwaitable <IMessageActivity> result)
        {
            IMessageActivity userText          = await result;
            string           userTextInEnglish = await MessageTranslator.TranslateTextAsync(userText.Text);

            userText.Text = userTextInEnglish;
            await context.Forward(_chitChatDialog, this.AfterChitChatComplete, userText, CancellationToken.None);
        }
Example #21
0
        public void Replace_IgnoreReplacementsNotRequired()
        {
            var mt           = new MessageTranslator("blah {validator.const} ${Property} ${Property.Prop} {Const}");
            var replacements = new Dictionary <string, string> {
                { "${Property}", "1" }, { "{Const}", "2" }
            };

            mt.Replace(replacements).Should().Be.EqualTo("blah {validator.const} 1 ${Property.Prop} 2");
        }
Example #22
0
        public void Replace_NullWithEmpty()
        {
            var mt           = new MessageTranslator("blah {validator.const} ${Property} ${Property.Prop} {Const}");
            var replacements = new Dictionary <string, string> {
                { "${Property}", null }, { "{Const}", "2" }
            };

            mt.Replace(replacements).Should().Be.EqualTo("blah {validator.const}  ${Property.Prop} 2");
        }
Example #23
0
        public void Replace_Duplications()
        {
            var mt           = new MessageTranslator("blah {Const} ${Property} ${Property} {Const}");
            var replacements = new Dictionary <string, string> {
                { "${Property}", "2" }, { "{Const}", "1" }
            };

            mt.Replace(replacements).Should().Be.EqualTo("blah 1 2 2 1");
        }
Example #24
0
        public MessageService(
            IReadOnlyDictionary <string, IReadOnlyDictionary <string, string> > translations,
            IReadOnlyDictionary <int, IError> errors,
            IReadOnlyDictionary <string, IReadOnlyList <int> > template)
        {
            _translator = new MessageTranslator(translations);

            _cache = BuildMessageCache(_translator, errors, template);
        }
Example #25
0
 public MsgTrans()
 {
     msgTran = new MessageTranslator(new MessageOutput(),
                                     Properties.Settings.Default.NtStatusXml,
                                     Properties.Settings.Default.WinerrorXml,
                                     Properties.Settings.Default.HresultXml,
                                     Properties.Settings.Default.BugcheckXml,
                                     Properties.Settings.Default.WmXml,
                                     Properties.Settings.Default.BugUrl);
     Assert.IsNotNull(msgTran);
 }
Example #26
0
    private void ClientConnection()
    {
        if (!NetworkCommon.Connected)
        {
            Invoke("ClientConnection", .1f);
        }

        NetworkCommon.Send(null, MessageTranslator.ToByteArray(
                               NetworkTranslator.createMessage(NetworkCommon.ID, 1 - NetworkCommon.ID, NetworkMessage.MessageValue.CONNECT)
                               ));
    }
            public void Should_ThrowException_When_NullIndexedPathHolders()
            {
                var errorMessages = new[]
                {
                    "message1",
                    "message2 {_path}"
                };

                Action action = () => MessageTranslator.TranslateMessagesWithPathPlaceholders("path", errorMessages, null);

                action.Should().ThrowExactly <NullReferenceException>();
            }
Example #28
0
        public IReadOnlyDictionary <string, IReadOnlyList <string> > GetMessages(Dictionary <string, List <int> > errors, string translationName = null)
        {
            var results = new Dictionary <string, IReadOnlyList <string> >(errors.Count);

            translationName = translationName ?? nameof(Translation.English);

            foreach (var pair in errors)
            {
                var path      = pair.Key;
                var errorsIds = pair.Value;

                var capacity = _cache.GetMessageAmount(errorsIds);

                if (capacity == 0)
                {
                    continue;
                }

                var allMessages = new string[capacity];

                var index = 0;

                for (var i = 0; i < errorsIds.Count; ++i)
                {
                    var errorId = errorsIds[i];

                    IReadOnlyList <string> messages;

                    if (!_cache.ContainsPathArgs(translationName, errorId))
                    {
                        messages = _cache.GetMessages(translationName, errorId);
                    }
                    else if (_cache.IsMessageWithPathArgsCached(translationName, path, errorId))
                    {
                        messages = _cache.GetMessagesWithPathArgs(translationName, path, errorId);
                    }
                    else
                    {
                        var cachedMessages          = _cache.GetMessages(translationName, errorId);
                        var indexedPathPlaceholders = _cache.GetIndexedPathPlaceholders(translationName, errorId);

                        messages = MessageTranslator.TranslateMessagesWithPathPlaceholders(path, cachedMessages, indexedPathPlaceholders);
                    }

                    CopyMessages(messages, allMessages, ref index);
                }

                results.Add(path, allMessages);
            }

            return(results);
        }
Example #29
0
        public void Replace_TokensToTranslate()
        {
            var mt           = new MessageTranslator("blah {validator.const} ${Property} ${Property.Prop} {Const}");
            var replacements = new Dictionary <string, string>
            {
                { "{validator.const}", "1" },
                { "${Property}", "2" },
                { "${Property.Prop}", "3" },
                { "{Const}", "4" }
            };

            mt.Replace(replacements).Should().Be.EqualTo("blah 1 2 3 4");
        }
Example #30
0
    void ReceiveResult(IAsyncResult ar)
    {
        var        receiveCallback = (ReceiveDelegate)ar.AsyncState;
        IPEndPoint ep    = null;
        var        bytes = m_Client.EndReceive(ar, ref ep);

        if (this is NetworkServer)
        {
            (this as NetworkServer).addClient(ep);
        }

        receiveCallback(bytes, b => MessageTranslator.Interpret(ep, b));
    }