Browse Source

Enable nullable annotations for Volo.Abp.Localization

pull/17020/head
liangshiwei 3 years ago
parent
commit
f3292d63b2
  1. 2
      framework/src/Volo.Abp.Localization/Volo.Abp.Localization.csproj
  2. 8
      framework/src/Volo.Abp.Localization/Volo/Abp/Localization/AbpDictionaryBasedStringLocalizer.cs
  3. 8
      framework/src/Volo.Abp.Localization/Volo/Abp/Localization/AbpEnumLocalizer.cs
  4. 2
      framework/src/Volo.Abp.Localization/Volo/Abp/Localization/AbpLocalizationOptions.cs
  5. 2
      framework/src/Volo.Abp.Localization/Volo/Abp/Localization/AbpStringLocalizerExtensions.cs
  6. 16
      framework/src/Volo.Abp.Localization/Volo/Abp/Localization/AbpStringLocalizerFactory.cs
  7. 6
      framework/src/Volo.Abp.Localization/Volo/Abp/Localization/External/IExternalLocalizationStore.cs
  8. 6
      framework/src/Volo.Abp.Localization/Volo/Abp/Localization/External/NullExternalLocalizationStore.cs
  9. 2
      framework/src/Volo.Abp.Localization/Volo/Abp/Localization/ILanguageInfo.cs
  10. 2
      framework/src/Volo.Abp.Localization/Volo/Abp/Localization/ILocalizableStringSerializer.cs
  11. 2
      framework/src/Volo.Abp.Localization/Volo/Abp/Localization/ILocalizationDictionary.cs
  12. 2
      framework/src/Volo.Abp.Localization/Volo/Abp/Localization/ILocalizationResourceContributor.cs
  13. 14
      framework/src/Volo.Abp.Localization/Volo/Abp/Localization/Json/JsonLocalizationDictionaryBuilder.cs
  14. 2
      framework/src/Volo.Abp.Localization/Volo/Abp/Localization/Json/JsonLocalizationFile.cs
  15. 29
      framework/src/Volo.Abp.Localization/Volo/Abp/Localization/LanguageInfo.cs
  16. 4
      framework/src/Volo.Abp.Localization/Volo/Abp/Localization/LanguageInfoExtensions.cs
  17. 2
      framework/src/Volo.Abp.Localization/Volo/Abp/Localization/LocalizableStringSerializer.cs
  18. 4
      framework/src/Volo.Abp.Localization/Volo/Abp/Localization/LocalizationResource.cs
  19. 7
      framework/src/Volo.Abp.Localization/Volo/Abp/Localization/LocalizationResourceBase.cs
  20. 2
      framework/src/Volo.Abp.Localization/Volo/Abp/Localization/LocalizationResourceContributorList.cs
  21. 8
      framework/src/Volo.Abp.Localization/Volo/Abp/Localization/LocalizationResourceDictionary.cs
  22. 4
      framework/src/Volo.Abp.Localization/Volo/Abp/Localization/NonTypedLocalizationResource.cs
  23. 2
      framework/src/Volo.Abp.Localization/Volo/Abp/Localization/StaticLocalizationDictionary.cs
  24. 2
      framework/src/Volo.Abp.Localization/Volo/Abp/Localization/VirtualFiles/Json/JsonVirtualFileLocalizationResourceContributor.cs
  25. 14
      framework/src/Volo.Abp.Localization/Volo/Abp/Localization/VirtualFiles/VirtualFileLocalizationResourceContributorBase.cs

2
framework/src/Volo.Abp.Localization/Volo.Abp.Localization.csproj

@ -5,6 +5,8 @@
<PropertyGroup> <PropertyGroup>
<TargetFrameworks>netstandard2.0;netstandard2.1;net7.0</TargetFrameworks> <TargetFrameworks>netstandard2.0;netstandard2.1;net7.0</TargetFrameworks>
<Nullable>enable</Nullable>
<WarningsAsErrors>Nullable</WarningsAsErrors>
<AssemblyName>Volo.Abp.Localization</AssemblyName> <AssemblyName>Volo.Abp.Localization</AssemblyName>
<PackageId>Volo.Abp.Localization</PackageId> <PackageId>Volo.Abp.Localization</PackageId>
<AssetTargetFallback>$(AssetTargetFallback);portable-net45+win8+wp8+wpa81;</AssetTargetFallback> <AssetTargetFallback>$(AssetTargetFallback);portable-net45+win8+wp8+wpa81;</AssetTargetFallback>

8
framework/src/Volo.Abp.Localization/Volo/Abp/Localization/AbpDictionaryBasedStringLocalizer.cs

@ -118,7 +118,7 @@ public class AbpDictionaryBasedStringLocalizer : IAbpStringLocalizer
return value; return value;
} }
protected virtual LocalizedString GetLocalizedStringOrNull( protected virtual LocalizedString? GetLocalizedStringOrNull(
string name, string name,
string cultureName, string cultureName,
bool tryDefaults = true) bool tryDefaults = true)
@ -153,7 +153,7 @@ public class AbpDictionaryBasedStringLocalizer : IAbpStringLocalizer
//Try to get from default language //Try to get from default language
if (!Resource.DefaultCultureName.IsNullOrEmpty()) if (!Resource.DefaultCultureName.IsNullOrEmpty())
{ {
var strDefault = Resource.Contributors.GetOrNull(Resource.DefaultCultureName, name); var strDefault = Resource.Contributors.GetOrNull(Resource.DefaultCultureName!, name);
if (strDefault != null) if (strDefault != null)
{ {
return strDefault; return strDefault;
@ -208,7 +208,7 @@ public class AbpDictionaryBasedStringLocalizer : IAbpStringLocalizer
//Fill all strings from default culture //Fill all strings from default culture
if (!Resource.DefaultCultureName.IsNullOrEmpty()) if (!Resource.DefaultCultureName.IsNullOrEmpty())
{ {
Resource.Contributors.Fill(Resource.DefaultCultureName, allStrings, includeDynamicContributors); Resource.Contributors.Fill(Resource.DefaultCultureName!, allStrings, includeDynamicContributors);
} }
//Overwrite all strings from the language based on country culture //Overwrite all strings from the language based on country culture
@ -268,7 +268,7 @@ public class AbpDictionaryBasedStringLocalizer : IAbpStringLocalizer
if (!Resource.DefaultCultureName.IsNullOrEmpty()) if (!Resource.DefaultCultureName.IsNullOrEmpty())
{ {
await Resource.Contributors.FillAsync( await Resource.Contributors.FillAsync(
Resource.DefaultCultureName, Resource.DefaultCultureName!,
allStrings, allStrings,
includeDynamicContributors includeDynamicContributors
); );

8
framework/src/Volo.Abp.Localization/Volo/Abp/Localization/AbpEnumLocalizer.cs

@ -19,14 +19,14 @@ public class AbpEnumLocalizer : IAbpEnumLocalizer, ITransientDependency
return GetStringInternal(enumType, enumValue, StringLocalizerFactory.CreateDefaultOrNull()); return GetStringInternal(enumType, enumValue, StringLocalizerFactory.CreateDefaultOrNull());
} }
public virtual string GetString(Type enumType, object enumValue, params IStringLocalizer[] specifyLocalizers) public virtual string GetString(Type enumType, object enumValue, params IStringLocalizer?[] specifyLocalizers)
{ {
return GetStringInternal(enumType, enumValue, specifyLocalizers); return GetStringInternal(enumType, enumValue, specifyLocalizers);
} }
protected virtual string GetStringInternal(Type enumType, object enumValue, params IStringLocalizer[] specifyLocalizers) protected virtual string GetStringInternal(Type enumType, object enumValue, params IStringLocalizer?[] specifyLocalizers)
{ {
var memberName = enumType.GetEnumName(enumValue); var memberName = enumType.GetEnumName(enumValue)!;
var localizedString = GetStringOrNull( var localizedString = GetStringOrNull(
specifyLocalizers, specifyLocalizers,
new[] new[]
@ -42,7 +42,7 @@ public class AbpEnumLocalizer : IAbpEnumLocalizer, ITransientDependency
return localizedString ?? memberName; return localizedString ?? memberName;
} }
protected virtual string GetStringOrNull(IStringLocalizer[] localizers, IEnumerable<string> keys) protected virtual string? GetStringOrNull(IStringLocalizer?[] localizers, IEnumerable<string> keys)
{ {
foreach (var key in keys) foreach (var key in keys)
{ {

2
framework/src/Volo.Abp.Localization/Volo/Abp/Localization/AbpLocalizationOptions.cs

@ -11,7 +11,7 @@ public class AbpLocalizationOptions
/// <summary> /// <summary>
/// Used as the default resource when resource was not specified on a localization operation. /// Used as the default resource when resource was not specified on a localization operation.
/// </summary> /// </summary>
public Type DefaultResourceType { get; set; } public Type? DefaultResourceType { get; set; }
public ITypeList<ILocalizationResourceContributor> GlobalContributors { get; } public ITypeList<ILocalizationResourceContributor> GlobalContributors { get; }

2
framework/src/Volo.Abp.Localization/Volo/Abp/Localization/AbpStringLocalizerExtensions.cs

@ -35,7 +35,7 @@ public static class AbpStringLocalizerExtensions
throw new AbpException($"Could not find the _localizer field inside the {typeof(StringLocalizer<>).FullName} class. Probably its name has changed. Please report this issue to the ABP framework."); throw new AbpException($"Could not find the _localizer field inside the {typeof(StringLocalizer<>).FullName} class. Probably its name has changed. Please report this issue to the ABP framework.");
} }
return localizerField.GetValue(stringLocalizer) as IStringLocalizer; return (localizerField.GetValue(stringLocalizer) as IStringLocalizer)!;
} }
public static IEnumerable<LocalizedString> GetAllStrings( public static IEnumerable<LocalizedString> GetAllStrings(

16
framework/src/Volo.Abp.Localization/Volo/Abp/Localization/AbpStringLocalizerFactory.cs

@ -52,12 +52,12 @@ public class AbpStringLocalizerFactory : IStringLocalizerFactory, IAbpStringLoca
return CreateInternal(resource.ResourceName, resource, lockCache); return CreateInternal(resource.ResourceName, resource, lockCache);
} }
public IStringLocalizer CreateByResourceNameOrNull(string resourceName) public IStringLocalizer? CreateByResourceNameOrNull(string resourceName)
{ {
return CreateByResourceNameOrNullInternal(resourceName, lockCache: true); return CreateByResourceNameOrNullInternal(resourceName, lockCache: true);
} }
private IStringLocalizer CreateByResourceNameOrNullInternal( private IStringLocalizer? CreateByResourceNameOrNullInternal(
string resourceName, string resourceName,
bool lockCache) bool lockCache)
{ {
@ -74,12 +74,12 @@ public class AbpStringLocalizerFactory : IStringLocalizerFactory, IAbpStringLoca
return CreateInternal(resourceName, resource, lockCache); return CreateInternal(resourceName, resource, lockCache);
} }
public Task<IStringLocalizer> CreateByResourceNameOrNullAsync(string resourceName) public Task<IStringLocalizer?> CreateByResourceNameOrNullAsync(string resourceName)
{ {
return CreateByResourceNameOrNullInternalAsync(resourceName, lockCache: true); return CreateByResourceNameOrNullInternalAsync(resourceName, lockCache: true);
} }
private async Task<IStringLocalizer> CreateByResourceNameOrNullInternalAsync( private async Task<IStringLocalizer?> CreateByResourceNameOrNullInternalAsync(
string resourceName, string resourceName,
bool lockCache) bool lockCache)
{ {
@ -175,7 +175,7 @@ public class AbpStringLocalizerFactory : IStringLocalizerFactory, IAbpStringLoca
{ {
resource.Contributors.Add( resource.Contributors.Add(
Activator Activator
.CreateInstance(globalContributorType) .CreateInstance(globalContributorType)!
.As<ILocalizationResourceContributor>() .As<ILocalizationResourceContributor>()
); );
} }
@ -194,7 +194,7 @@ public class AbpStringLocalizerFactory : IStringLocalizerFactory, IAbpStringLoca
.BaseResourceNames .BaseResourceNames
.Select(x => CreateByResourceNameOrNullInternal(x, lockCache: false)) .Select(x => CreateByResourceNameOrNullInternal(x, lockCache: false))
.Where(x => x != null) .Where(x => x != null)
.ToList(), .ToList()!,
AbpLocalizationOptions AbpLocalizationOptions
) )
); );
@ -206,7 +206,7 @@ public class AbpStringLocalizerFactory : IStringLocalizerFactory, IAbpStringLoca
{ {
resource.Contributors.Add( resource.Contributors.Add(
Activator Activator
.CreateInstance(globalContributorType) .CreateInstance(globalContributorType)!
.As<ILocalizationResourceContributor>() .As<ILocalizationResourceContributor>()
); );
} }
@ -259,7 +259,7 @@ public class AbpStringLocalizerFactory : IStringLocalizerFactory, IAbpStringLoca
} }
} }
public IStringLocalizer CreateDefaultOrNull() public IStringLocalizer? CreateDefaultOrNull()
{ {
if (AbpLocalizationOptions.DefaultResourceType == null) if (AbpLocalizationOptions.DefaultResourceType == null)
{ {

6
framework/src/Volo.Abp.Localization/Volo/Abp/Localization/External/IExternalLocalizationStore.cs

@ -5,11 +5,9 @@ namespace Volo.Abp.Localization.External;
public interface IExternalLocalizationStore public interface IExternalLocalizationStore
{ {
[CanBeNull] LocalizationResourceBase? GetResourceOrNull([NotNull] string resourceName);
LocalizationResourceBase GetResourceOrNull([NotNull] string resourceName);
[ItemCanBeNull] Task<LocalizationResourceBase?> GetResourceOrNullAsync([NotNull] string resourceName);
Task<LocalizationResourceBase> GetResourceOrNullAsync([NotNull] string resourceName);
Task<string[]> GetResourceNamesAsync(); Task<string[]> GetResourceNamesAsync();

6
framework/src/Volo.Abp.Localization/Volo/Abp/Localization/External/NullExternalLocalizationStore.cs

@ -6,14 +6,14 @@ namespace Volo.Abp.Localization.External;
public class NullExternalLocalizationStore : IExternalLocalizationStore, ISingletonDependency public class NullExternalLocalizationStore : IExternalLocalizationStore, ISingletonDependency
{ {
public LocalizationResourceBase GetResourceOrNull(string resourceName) public LocalizationResourceBase? GetResourceOrNull(string resourceName)
{ {
return null; return null;
} }
public Task<LocalizationResourceBase> GetResourceOrNullAsync(string resourceName) public Task<LocalizationResourceBase?> GetResourceOrNullAsync(string resourceName)
{ {
return Task.FromResult<LocalizationResourceBase>(null); return Task.FromResult<LocalizationResourceBase?>(null);
} }
public Task<string[]> GetResourceNamesAsync() public Task<string[]> GetResourceNamesAsync()

2
framework/src/Volo.Abp.Localization/Volo/Abp/Localization/ILanguageInfo.cs

@ -8,5 +8,5 @@ public interface ILanguageInfo
string DisplayName { get; } string DisplayName { get; }
string FlagIcon { get; } string? FlagIcon { get; }
} }

2
framework/src/Volo.Abp.Localization/Volo/Abp/Localization/ILocalizableStringSerializer.cs

@ -2,7 +2,7 @@
public interface ILocalizableStringSerializer public interface ILocalizableStringSerializer
{ {
string Serialize(ILocalizableString localizableString); string? Serialize(ILocalizableString localizableString);
ILocalizableString Deserialize(string value); ILocalizableString Deserialize(string value);
} }

2
framework/src/Volo.Abp.Localization/Volo/Abp/Localization/ILocalizationDictionary.cs

@ -10,7 +10,7 @@ public interface ILocalizationDictionary
{ {
string CultureName { get; } string CultureName { get; }
LocalizedString GetOrNull(string name); LocalizedString? GetOrNull(string name);
void Fill(Dictionary<string, LocalizedString> dictionary); void Fill(Dictionary<string, LocalizedString> dictionary);
} }

2
framework/src/Volo.Abp.Localization/Volo/Abp/Localization/ILocalizationResourceContributor.cs

@ -10,7 +10,7 @@ public interface ILocalizationResourceContributor
void Initialize(LocalizationResourceInitializationContext context); void Initialize(LocalizationResourceInitializationContext context);
LocalizedString GetOrNull(string cultureName, string name); LocalizedString? GetOrNull(string cultureName, string name);
void Fill(string cultureName, Dictionary<string, LocalizedString> dictionary); void Fill(string cultureName, Dictionary<string, LocalizedString> dictionary);

14
framework/src/Volo.Abp.Localization/Volo/Abp/Localization/Json/JsonLocalizationDictionaryBuilder.cs

@ -2,7 +2,6 @@ using System;
using System.Collections.Generic; using System.Collections.Generic;
using System.IO; using System.IO;
using System.Text.Json; using System.Text.Json;
using JetBrains.Annotations;
using Microsoft.Extensions.Localization; using Microsoft.Extensions.Localization;
namespace Volo.Abp.Localization.Json; namespace Volo.Abp.Localization.Json;
@ -13,8 +12,7 @@ public static class JsonLocalizationDictionaryBuilder
/// Builds an <see cref="JsonLocalizationDictionaryBuilder" /> from given file. /// Builds an <see cref="JsonLocalizationDictionaryBuilder" /> from given file.
/// </summary> /// </summary>
/// <param name="filePath">Path of the file</param> /// <param name="filePath">Path of the file</param>
[CanBeNull] public static ILocalizationDictionary? BuildFromFile(string filePath)
public static ILocalizationDictionary BuildFromFile(string filePath)
{ {
try try
{ {
@ -38,10 +36,9 @@ public static class JsonLocalizationDictionaryBuilder
/// Builds an <see cref="JsonLocalizationDictionaryBuilder" /> from given json string. /// Builds an <see cref="JsonLocalizationDictionaryBuilder" /> from given json string.
/// </summary> /// </summary>
/// <param name="jsonString">Json string</param> /// <param name="jsonString">Json string</param>
[CanBeNull] public static ILocalizationDictionary? BuildFromJsonString(string jsonString)
public static ILocalizationDictionary BuildFromJsonString(string jsonString)
{ {
JsonLocalizationFile jsonFile; JsonLocalizationFile? jsonFile;
try try
{ {
jsonFile = JsonSerializer.Deserialize<JsonLocalizationFile>(jsonString, DeserializeOptions); jsonFile = JsonSerializer.Deserialize<JsonLocalizationFile>(jsonString, DeserializeOptions);
@ -50,6 +47,11 @@ public static class JsonLocalizationDictionaryBuilder
{ {
throw new AbpException("Can not parse json string. " + ex.Message); throw new AbpException("Can not parse json string. " + ex.Message);
} }
if (jsonFile == null)
{
return null;
}
var cultureCode = jsonFile.Culture; var cultureCode = jsonFile.Culture;
if (string.IsNullOrEmpty(cultureCode)) if (string.IsNullOrEmpty(cultureCode))

2
framework/src/Volo.Abp.Localization/Volo/Abp/Localization/Json/JsonLocalizationFile.cs

@ -7,7 +7,7 @@ public class JsonLocalizationFile
/// <summary> /// <summary>
/// Culture name; eg : en , en-us, zh-CN /// Culture name; eg : en , en-us, zh-CN
/// </summary> /// </summary>
public string Culture { get; set; } public string Culture { get; set; } = default!;
public Dictionary<string, string> Texts { get; set; } public Dictionary<string, string> Texts { get; set; }

29
framework/src/Volo.Abp.Localization/Volo/Abp/Localization/LanguageInfo.cs

@ -8,19 +8,18 @@ namespace Volo.Abp.Localization;
public class LanguageInfo : ILanguageInfo public class LanguageInfo : ILanguageInfo
{ {
[NotNull] [NotNull]
public virtual string CultureName { get; protected set; } public virtual string CultureName { get; protected set; } = default!;
[NotNull] [NotNull]
public virtual string UiCultureName { get; protected set; } public virtual string UiCultureName { get; protected set; } = default!;
[NotNull] [NotNull]
public virtual string DisplayName { get; protected set; } public virtual string DisplayName { get; protected set; } = default!;
[NotNull] [NotNull]
public virtual string TwoLetterISOLanguageName { get; protected set; } public virtual string TwoLetterISOLanguageName { get; protected set; } = default!;
[CanBeNull] public virtual string? FlagIcon { get; set; }
public virtual string FlagIcon { get; set; }
protected LanguageInfo() protected LanguageInfo()
@ -30,30 +29,30 @@ public class LanguageInfo : ILanguageInfo
public LanguageInfo( public LanguageInfo(
string cultureName, string cultureName,
string uiCultureName = null, string? uiCultureName = null,
string displayName = null, string? displayName = null,
string flagIcon = null) string? flagIcon = null)
{ {
ChangeCultureInternal(cultureName, uiCultureName, displayName); ChangeCultureInternal(cultureName, uiCultureName, displayName);
FlagIcon = flagIcon; FlagIcon = flagIcon;
} }
public virtual void ChangeCulture(string cultureName, string uiCultureName = null, string displayName = null) public virtual void ChangeCulture(string cultureName, string? uiCultureName = null, string? displayName = null)
{ {
ChangeCultureInternal(cultureName, uiCultureName, displayName); ChangeCultureInternal(cultureName, uiCultureName, displayName);
} }
private void ChangeCultureInternal(string cultureName, string uiCultureName, string displayName) private void ChangeCultureInternal(string cultureName, string? uiCultureName, string? displayName)
{ {
CultureName = Check.NotNullOrWhiteSpace(cultureName, nameof(cultureName)); CultureName = Check.NotNullOrWhiteSpace(cultureName, nameof(cultureName));
UiCultureName = !uiCultureName.IsNullOrWhiteSpace() UiCultureName = (!uiCultureName.IsNullOrWhiteSpace()
? uiCultureName ? uiCultureName
: cultureName; : cultureName)!;
DisplayName = !displayName.IsNullOrWhiteSpace() DisplayName = (!displayName.IsNullOrWhiteSpace()
? displayName ? displayName
: cultureName; : cultureName)!;
TwoLetterISOLanguageName = new CultureInfo(cultureName) TwoLetterISOLanguageName = new CultureInfo(cultureName)
.TwoLetterISOLanguageName; .TwoLetterISOLanguageName;

4
framework/src/Volo.Abp.Localization/Volo/Abp/Localization/LanguageInfoExtensions.cs

@ -6,10 +6,10 @@ namespace Volo.Abp.Localization;
public static class LanguageInfoExtensions public static class LanguageInfoExtensions
{ {
public static T FindByCulture<T>( public static T? FindByCulture<T>(
[NotNull] this IEnumerable<T> languages, [NotNull] this IEnumerable<T> languages,
[NotNull] string cultureName, [NotNull] string cultureName,
[CanBeNull] string uiCultureName = null) string? uiCultureName = null)
where T : class, ILanguageInfo where T : class, ILanguageInfo
{ {
if (uiCultureName == null) if (uiCultureName == null)

2
framework/src/Volo.Abp.Localization/Volo/Abp/Localization/LocalizableStringSerializer.cs

@ -13,7 +13,7 @@ public class LocalizableStringSerializer : ILocalizableStringSerializer, ITransi
LocalizationOptions = localizationOptions.Value; LocalizationOptions = localizationOptions.Value;
} }
public virtual string Serialize(ILocalizableString localizableString) public virtual string? Serialize(ILocalizableString? localizableString)
{ {
if (localizableString == null) if (localizableString == null)
{ {

4
framework/src/Volo.Abp.Localization/Volo/Abp/Localization/LocalizationResource.cs

@ -12,8 +12,8 @@ public class LocalizationResource : LocalizationResourceBase
public LocalizationResource( public LocalizationResource(
[NotNull] Type resourceType, [NotNull] Type resourceType,
[CanBeNull] string defaultCultureName = null, string? defaultCultureName = null,
[CanBeNull] ILocalizationResourceContributor initialContributor = null) ILocalizationResourceContributor? initialContributor = null)
: base( : base(
LocalizationResourceNameAttribute.GetName(resourceType), LocalizationResourceNameAttribute.GetName(resourceType),
defaultCultureName, defaultCultureName,

7
framework/src/Volo.Abp.Localization/Volo/Abp/Localization/LocalizationResourceBase.cs

@ -10,16 +10,15 @@ public abstract class LocalizationResourceBase
public List<string> BaseResourceNames { get; } public List<string> BaseResourceNames { get; }
[CanBeNull] public string? DefaultCultureName { get; set; }
public string DefaultCultureName { get; set; }
[NotNull] [NotNull]
public LocalizationResourceContributorList Contributors { get; } public LocalizationResourceContributorList Contributors { get; }
public LocalizationResourceBase( public LocalizationResourceBase(
[NotNull] string resourceName, [NotNull] string resourceName,
[CanBeNull] string defaultCultureName = null, string? defaultCultureName = null,
[CanBeNull] ILocalizationResourceContributor initialContributor = null) ILocalizationResourceContributor? initialContributor = null)
{ {
ResourceName = Check.NotNullOrWhiteSpace(resourceName, nameof(resourceName)); ResourceName = Check.NotNullOrWhiteSpace(resourceName, nameof(resourceName));
DefaultCultureName = defaultCultureName; DefaultCultureName = defaultCultureName;

2
framework/src/Volo.Abp.Localization/Volo/Abp/Localization/LocalizationResourceContributorList.cs

@ -7,7 +7,7 @@ namespace Volo.Abp.Localization;
public class LocalizationResourceContributorList : List<ILocalizationResourceContributor> public class LocalizationResourceContributorList : List<ILocalizationResourceContributor>
{ {
public LocalizedString GetOrNull( public LocalizedString? GetOrNull(
string cultureName, string cultureName,
string name, string name,
bool includeDynamicContributors = true) bool includeDynamicContributors = true)

8
framework/src/Volo.Abp.Localization/Volo/Abp/Localization/LocalizationResourceDictionary.cs

@ -8,12 +8,12 @@ public class LocalizationResourceDictionary : Dictionary<string, LocalizationRes
{ {
private readonly Dictionary<Type, LocalizationResourceBase> _resourcesByTypes = new(); private readonly Dictionary<Type, LocalizationResourceBase> _resourcesByTypes = new();
public LocalizationResource Add<TResouce>([CanBeNull] string defaultCultureName = null) public LocalizationResource Add<TResouce>(string? defaultCultureName = null)
{ {
return Add(typeof(TResouce), defaultCultureName); return Add(typeof(TResouce), defaultCultureName);
} }
public LocalizationResource Add(Type resourceType, [CanBeNull] string defaultCultureName = null) public LocalizationResource Add(Type resourceType, string? defaultCultureName = null)
{ {
var resourceName = LocalizationResourceNameAttribute.GetName(resourceType); var resourceName = LocalizationResourceNameAttribute.GetName(resourceType);
if (ContainsKey(resourceName)) if (ContainsKey(resourceName))
@ -29,7 +29,7 @@ public class LocalizationResourceDictionary : Dictionary<string, LocalizationRes
return resource; return resource;
} }
public NonTypedLocalizationResource Add([NotNull] string resourceName, [CanBeNull] string defaultCultureName = null) public NonTypedLocalizationResource Add([NotNull] string resourceName, string? defaultCultureName = null)
{ {
Check.NotNullOrWhiteSpace(resourceName, nameof(resourceName)); Check.NotNullOrWhiteSpace(resourceName, nameof(resourceName));
@ -80,7 +80,7 @@ public class LocalizationResourceDictionary : Dictionary<string, LocalizationRes
return resource; return resource;
} }
public LocalizationResourceBase GetOrNull(Type resourceType) public LocalizationResourceBase? GetOrNull(Type resourceType)
{ {
return _resourcesByTypes.GetOrDefault(resourceType); return _resourcesByTypes.GetOrDefault(resourceType);
} }

4
framework/src/Volo.Abp.Localization/Volo/Abp/Localization/NonTypedLocalizationResource.cs

@ -6,8 +6,8 @@ public class NonTypedLocalizationResource : LocalizationResourceBase
{ {
public NonTypedLocalizationResource( public NonTypedLocalizationResource(
[NotNull] string resourceName, [NotNull] string resourceName,
[CanBeNull] string defaultCultureName = null, string? defaultCultureName = null,
[CanBeNull] ILocalizationResourceContributor initialContributor = null ILocalizationResourceContributor? initialContributor = null
) : base( ) : base(
resourceName, resourceName,
defaultCultureName, defaultCultureName,

2
framework/src/Volo.Abp.Localization/Volo/Abp/Localization/StaticLocalizationDictionary.cs

@ -25,7 +25,7 @@ public class StaticLocalizationDictionary : ILocalizationDictionary
} }
/// <inheritdoc/> /// <inheritdoc/>
public virtual LocalizedString GetOrNull(string name) public virtual LocalizedString? GetOrNull(string name)
{ {
return Dictionary.GetOrDefault(name); return Dictionary.GetOrDefault(name);
} }

2
framework/src/Volo.Abp.Localization/Volo/Abp/Localization/VirtualFiles/Json/JsonVirtualFileLocalizationResourceContributor.cs

@ -19,7 +19,7 @@ public class JsonVirtualFileLocalizationResourceContributor : VirtualFileLocaliz
return file.Name.EndsWith(".json", StringComparison.OrdinalIgnoreCase); return file.Name.EndsWith(".json", StringComparison.OrdinalIgnoreCase);
} }
protected override ILocalizationDictionary CreateDictionaryFromFileContent(string jsonString) protected override ILocalizationDictionary? CreateDictionaryFromFileContent(string jsonString)
{ {
return JsonLocalizationDictionaryBuilder.BuildFromJsonString(jsonString); return JsonLocalizationDictionaryBuilder.BuildFromJsonString(jsonString);
} }

14
framework/src/Volo.Abp.Localization/Volo/Abp/Localization/VirtualFiles/VirtualFileLocalizationResourceContributorBase.cs

@ -16,11 +16,11 @@ public abstract class VirtualFileLocalizationResourceContributorBase : ILocaliza
public bool IsDynamic => false; public bool IsDynamic => false;
private readonly string _virtualPath; private readonly string _virtualPath;
private IVirtualFileProvider _virtualFileProvider; private IVirtualFileProvider _virtualFileProvider = default!;
private Dictionary<string, ILocalizationDictionary> _dictionaries; private Dictionary<string, ILocalizationDictionary>? _dictionaries;
private bool _subscribedForChanges; private bool _subscribedForChanges;
private readonly object _syncObj = new object(); private readonly object _syncObj = new object();
private LocalizationResourceBase _resource; private LocalizationResourceBase _resource = default!;
protected VirtualFileLocalizationResourceContributorBase(string virtualPath) protected VirtualFileLocalizationResourceContributorBase(string virtualPath)
{ {
@ -33,7 +33,7 @@ public abstract class VirtualFileLocalizationResourceContributorBase : ILocaliza
_virtualFileProvider = context.ServiceProvider.GetRequiredService<IVirtualFileProvider>(); _virtualFileProvider = context.ServiceProvider.GetRequiredService<IVirtualFileProvider>();
} }
public virtual LocalizedString GetOrNull(string cultureName, string name) public virtual LocalizedString? GetOrNull(string cultureName, string name)
{ {
return GetDictionaries().GetOrDefault(cultureName)?.GetOrNull(name); return GetDictionaries().GetOrDefault(cultureName)?.GetOrNull(name);
} }
@ -118,8 +118,7 @@ public abstract class VirtualFileLocalizationResourceContributorBase : ILocaliza
protected abstract bool CanParseFile(IFileInfo file); protected abstract bool CanParseFile(IFileInfo file);
[CanBeNull] protected virtual ILocalizationDictionary? CreateDictionaryFromFile(IFileInfo file)
protected virtual ILocalizationDictionary CreateDictionaryFromFile(IFileInfo file)
{ {
using (var stream = file.CreateReadStream()) using (var stream = file.CreateReadStream())
{ {
@ -127,6 +126,5 @@ public abstract class VirtualFileLocalizationResourceContributorBase : ILocaliza
} }
} }
[CanBeNull] protected abstract ILocalizationDictionary? CreateDictionaryFromFileContent(string fileContent);
protected abstract ILocalizationDictionary CreateDictionaryFromFileContent(string fileContent);
} }

Loading…
Cancel
Save