public void LocalTextRegistry_AddPending_DoesntOverrideApprovedText()
        {
            using (new MunqContext())
            {
                bool pending = true;

                var ctx = A.Fake<ILocalTextContext>();
                A.CallTo(() => ctx.IsApprovalMode).ReturnsLazily(() => pending);

                Dependency.Resolve<IDependencyRegistrar>()
                    .RegisterInstance<ILocalTextContext>(ctx);

                var registry = new LocalTextRegistry();
                registry.Add("es", "key", "approvedTranslation");
                Assert.Equal("approvedTranslation", registry.TryGet("es", "key"));

                registry.AddPending("es", "key", "pendingTranslation1");
                Assert.Equal("pendingTranslation1", registry.TryGet("es", "key"));

                pending = false;

                Assert.Equal("approvedTranslation", registry.TryGet("es", "key"));

                pending = true;

                registry.AddPending("es", "key", "pendingTranslation2");
                Assert.Equal("pendingTranslation2", registry.TryGet("es", "key"));

                pending = false;

                Assert.Equal("approvedTranslation", registry.TryGet("es", "key"));
            }
        }
        public void LocalTextRegistry_AddPending_DoesntOverrideApprovedText()
        {
            using (new MunqContext())
            {
                bool pending = true;

                var ctx = A.Fake <ILocalTextContext>();
                A.CallTo(() => ctx.IsApprovalMode).ReturnsLazily(() => pending);

                Dependency.Resolve <IDependencyRegistrar>()
                .RegisterInstance <ILocalTextContext>(ctx);

                var registry = new LocalTextRegistry();
                registry.Add("es", "key", "approvedTranslation");
                Assert.Equal("approvedTranslation", registry.TryGet("es", "key"));

                registry.AddPending("es", "key", "pendingTranslation1");
                Assert.Equal("pendingTranslation1", registry.TryGet("es", "key"));

                pending = false;

                Assert.Equal("approvedTranslation", registry.TryGet("es", "key"));

                pending = true;

                registry.AddPending("es", "key", "pendingTranslation2");
                Assert.Equal("pendingTranslation2", registry.TryGet("es", "key"));

                pending = false;

                Assert.Equal("approvedTranslation", registry.TryGet("es", "key"));
            }
        }
        public void LocalTextRegistry_Add_DoesntTrimAny()
        {
            var registry = new LocalTextRegistry();

            registry.Add("  es  ", " key ", " translation ");

            var actual = registry.TryGet("  es  ", " key ");

            Assert.Equal(" translation ", actual);
        }
        public void LocalTextRegistry_Add_OverridesExisting()
        {
            var registry = new LocalTextRegistry();

            registry.Add("es", "key", "oldTranslation");

            Assert.Equal("oldTranslation", registry.TryGet("es", "key"));

            registry.Add("es", "key", "newTranslation");

            Assert.Equal("newTranslation", registry.TryGet("es", "key"));
        }
        public void LocalTextRegistry_AddPending_DoesntTrimAny()
        {
            using (new MunqContext())
            {
                bool pending = true;

                var ctx = A.Fake<ILocalTextContext>();
                A.CallTo(() => ctx.IsApprovalMode).ReturnsLazily(() => pending);

                Dependency.Resolve<IDependencyRegistrar>()
                    .RegisterInstance<ILocalTextContext>(ctx);

                var registry = new LocalTextRegistry();
                registry.Add("  es  ", " key ", " translation ");

                var actual = registry.TryGet("  es  ", " key ");
                Assert.Equal(" translation ", actual);
            }
        }
        public void LocalTextRegistry_AddPending_DoesntTrimAny()
        {
            using (new MunqContext())
            {
                bool pending = true;

                var ctx = A.Fake <ILocalTextContext>();
                A.CallTo(() => ctx.IsApprovalMode).ReturnsLazily(() => pending);

                Dependency.Resolve <IDependencyRegistrar>()
                .RegisterInstance <ILocalTextContext>(ctx);

                var registry = new LocalTextRegistry();
                registry.Add("  es  ", " key ", " translation ");

                var actual = registry.TryGet("  es  ", " key ");
                Assert.Equal(" translation ", actual);
            }
        }
示例#7
0
        public static void InitializeLocalTexts()
        {
            var registrar = Dependency.Resolve <IDependencyRegistrar>();

            var registry = Dependency.TryResolve <ILocalTextRegistry>();

            if (registry == null)
            {
                registry = new LocalTextRegistry();
                registrar.RegisterInstance <ILocalTextRegistry>(registry);
            }

            NestedLocalTextRegistration.Initialize(ExtensibilityHelper.SelfAssemblies);
            NestedPermissionKeyRegistration.AddNestedPermissions(registry, ExtensibilityHelper.SelfAssemblies);
            EnumLocalTextRegistration.Initialize(ExtensibilityHelper.SelfAssemblies);
            EntityLocalTexts.Initialize();
            JsonLocalTextRegistration.AddFromFilesInFolder(HostingEnvironment.MapPath("~/Scripts/serenity/texts/"));
            JsonLocalTextRegistration.AddFromFilesInFolder(HostingEnvironment.MapPath("~/Scripts/site/texts/"));
            JsonLocalTextRegistration.AddFromFilesInFolder(HostingEnvironment.MapPath("~/App_Data/texts/"));
        }
        public void LocalTextRegistry_Add_WorksProperly()
        {
            var registry = new LocalTextRegistry();
            registry.Add("es", "key", "translation");

            var actual = registry.TryGet("es", "key");
            Assert.Equal("translation", actual);
        }
        public void LocalTextRegistry_Add_OverridesExisting()
        {
            var registry = new LocalTextRegistry();
            registry.Add("es", "key", "oldTranslation");

            Assert.Equal("oldTranslation", registry.TryGet("es", "key"));

            registry.Add("es", "key", "newTranslation");

            Assert.Equal("newTranslation", registry.TryGet("es", "key"));
        }
        public ListResponse <TranslationItem> List(TranslationListRequest request)
        {
            var result = new ListResponse <TranslationItem>();

            var availableKeys    = GetAllAvailableLocalTextKeys();
            var targetLanguageID = request.TargetLanguageID.TrimToNull();

            var customTranslations = new Dictionary <string, string>(StringComparer.OrdinalIgnoreCase);

            var textsFilePath = GetUserTextsFilePath(HostEnvironment, targetLanguageID);

            if (File.Exists(textsFilePath))
            {
                var json = JSON.Parse <Dictionary <string, JToken> >(File.ReadAllText(textsFilePath));
                JsonLocalTextRegistration.ProcessNestedDictionary(json, "", customTranslations);
                foreach (var key in customTranslations.Keys)
                {
                    availableKeys.Add(key);
                }
            }

            var sorted = new string[availableKeys.Count];

            availableKeys.CopyTo(sorted);
            Array.Sort(sorted);

            targetLanguageID = targetLanguageID ?? "";
            var sourceLanguageID = request.SourceLanguageID.TrimToEmpty();

            result.Entities = new List <TranslationItem>();

            Func <string, string> effective = delegate(string key)
            {
                if (key.StartsWith("Navigation."))
                {
                    key = key.Substring("Navigation.".Length);
                    return(key.Split(new char[] { '/' }).Last());
                }
                else if (key.StartsWith("Forms.") && key.Contains(".Categories."))
                {
                    return(key.Split(new char[] { '.' }).Last().TrimToNull());
                }

                return(key);
            };

            foreach (var key in sorted)
            {
                string customText;
                if (!customTranslations.TryGetValue(key, out customText))
                {
                    customText = null;
                }

                result.Entities.Add(new TranslationItem
                {
                    Key        = key,
                    SourceText = LocalTextRegistry.TryGet(sourceLanguageID, key, false) ?? effective(key),
                    TargetText = LocalTextRegistry.TryGet(targetLanguageID, key, false) ?? effective(key),
                    CustomText = customText
                });
            }

            return(result);
        }