public new IStringLocalizer Create(string baseName, string location) { FieldInfo fieldInfo = typeof(SqlStringLocalizerFactory).GetField("_resourceLocalizations", BindingFlags.Static | BindingFlags.NonPublic); var resourceLocalizations = (ConcurrentDictionary <string, IStringLocalizer>)fieldInfo.GetValue(this); fieldInfo = typeof(SqlStringLocalizerFactory).GetField("_developmentSetup", BindingFlags.Instance | BindingFlags.NonPublic); var developmentSetup = (DevelopmentSetup)fieldInfo.GetValue(this); fieldInfo = typeof(SqlStringLocalizerFactory).GetField("_options", BindingFlags.Instance | BindingFlags.NonPublic); var localizationOptions = (IOptions <SqlLocalizationOptions>)fieldInfo.GetValue(this); if (resourceLocalizations.Keys.Contains(baseName + location)) { return(resourceLocalizations[baseName + location]); } Type type = GetType().BaseType; MethodInfo method = type.GetMethods(BindingFlags.Instance | BindingFlags.NonPublic) .Single(m => m.Name == "GetAllFromDatabaseForResource"); SqlStringLocalizerFactory baseFactory = this; Dictionary <string, string> localizations = (Dictionary <string, string>)method.Invoke(baseFactory, new object[] { baseName + location }); SqlStringLocalizer sqlStringLocalizer = new SqlStringLocalizer(localizations, developmentSetup, baseName + location, localizationOptions.Value.ReturnOnlyKeyIfNotFound, localizationOptions.Value.CreateNewRecordWhenLocalisedStringDoesNotExist); return(resourceLocalizations.GetOrAdd(baseName + location, sqlStringLocalizer)); }
public void ResourceNotFound_Is_False_When_Resource_Exists() { // Arrange var stringProviderMock = new Mock <IStringProvider>(); stringProviderMock.Setup(p => p.GetString(It.IsAny <string>(), It.IsAny <CultureInfo>())).Returns <string, CultureInfo>((x, y) => "Invoer tekst"); var localizer = new SqlStringLocalizer(stringProviderMock.Object, "Test.Namespace.Foo.Bar", NullLogger.Instance); // Act var localizedString = localizer["INPUT_STRING"]; // Assert Assert.False(localizedString.ResourceNotFound); }
public void Get_Same_Value_When_Not_Found() { // Arrange var stringProviderMock = new Mock <IStringProvider>(); stringProviderMock.Setup(p => p.GetString(It.IsAny <string>(), It.IsAny <CultureInfo>())).Returns <string, CultureInfo>((x, y) => null); var localizer = new SqlStringLocalizer(stringProviderMock.Object, "Test.Namespace.Foo.Bar", NullLogger.Instance); // Act var localizedString = localizer["INPUT_STRING"]; // Assert Assert.Equal("INPUT_STRING", localizedString.Value); }
public void With_Culture_Returns_New_Localizer_With_Selected_Culture() { // Arrange const string lookupKey = "INPUT_STRING"; const string nlAnswer = "Invoer tekst"; const string enAnswer = "Input text"; var stringProviderMock = new Mock <IStringProvider>(); stringProviderMock.Setup(p => p.GetString(lookupKey, CultureInfo.GetCultureInfo("nl"))).Returns <string, CultureInfo>((x, y) => nlAnswer); stringProviderMock.Setup(p => p.GetString(lookupKey, CultureInfo.GetCultureInfo("en"))).Returns <string, CultureInfo>((x, y) => enAnswer); CultureInfo.CurrentUICulture = CultureInfo.GetCultureInfo("nl"); var currentUiLocalizer = new SqlStringLocalizer(stringProviderMock.Object, "Test.Namespace.Foo.Bar", NullLogger.Instance); // Act var englishLocalizer = currentUiLocalizer.WithCulture(CultureInfo.GetCultureInfo("en")); var localizedString = englishLocalizer[lookupKey]; // Assert Assert.Equal(enAnswer, localizedString.Value); }
public void Return_Correct_Localization_Based_On_Ui_Culture() { // Arrange const string lookupKey = "INPUT_STRING"; const string nlAnswer = "Invoer tekst"; const string enAnswer = "Input text"; var stringProviderMock = new Mock <IStringProvider>(); stringProviderMock.Setup(p => p.GetString(lookupKey, CultureInfo.GetCultureInfo("nl"))).Returns <string, CultureInfo>((x, y) => nlAnswer); stringProviderMock.Setup(p => p.GetString(lookupKey, CultureInfo.GetCultureInfo("en"))).Returns <string, CultureInfo>((x, y) => enAnswer); var localizer = new SqlStringLocalizer(stringProviderMock.Object, "Test.Namespace.Foo.Bar", NullLogger.Instance); CultureInfo.CurrentUICulture = CultureInfo.GetCultureInfo("nl"); // Act var localizedString = localizer[lookupKey]; // Assert Assert.Equal(nlAnswer, localizedString.Value); stringProviderMock.Verify(moq => moq.GetString(lookupKey, CultureInfo.GetCultureInfo("nl")), Times.AtLeastOnce()); stringProviderMock.Verify(moq => moq.GetString(lookupKey, CultureInfo.GetCultureInfo("en")), Times.Never()); }