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_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_Add_DoesntTrimAny() { 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); } }
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_Add_WorksProperly() { var registry = new LocalTextRegistry(); registry.Add("es", "key", "translation"); var actual = registry.TryGet("es", "key"); Assert.Equal("translation", actual); }
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); }