Skip to content

Commit 073f86a

Browse files
authored
feat(Localization): import localization logic auto load entry assembly (#2710)
* refactor: 精简重构代码 * refactor: 提高代码覆盖率 * chore: bump version 8.1.0
1 parent d73cfec commit 073f86a

File tree

2 files changed

+26
-21
lines changed

2 files changed

+26
-21
lines changed

src/BootstrapBlazor/BootstrapBlazor.csproj

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
<Project Sdk="Microsoft.NET.Sdk.Razor">
22

33
<PropertyGroup>
4-
<Version>8.0.7-beta03</Version>
4+
<Version>8.1.0</Version>
55
</PropertyGroup>
66

77
<ItemGroup Condition="'$(TargetFramework)' == 'net5.0'">

src/BootstrapBlazor/Extensions/LocalizationOptionsExtensions.cs

+25-20
Original file line numberDiff line numberDiff line change
@@ -23,16 +23,31 @@ internal static class LocalizationOptionsExtensions
2323
/// <returns></returns>
2424
public static IEnumerable<IConfigurationSection> GetJsonStringFromAssembly(this JsonLocalizationOptions option, Assembly assembly, string cultureName)
2525
{
26-
// 获得程序集内 Json 文件流集合
27-
var langHandlers = option.GetJsonHandlers(assembly, cultureName).ToList();
28-
2926
// 创建配置 ConfigurationBuilder
3027
var builder = new ConfigurationBuilder();
3128

29+
// 获取程序集中的资源文件
30+
var assemblies = new List<Assembly>()
31+
{
32+
assembly
33+
};
34+
35+
var entryAssembly = GetAssembly();
36+
if (assembly != entryAssembly)
37+
{
38+
assemblies.Add(entryAssembly);
39+
}
40+
if (option.AdditionalJsonAssemblies != null)
41+
{
42+
assemblies.AddRange(option.AdditionalJsonAssemblies);
43+
}
44+
45+
var streams = assemblies.SelectMany(i => option.GetResourceStream(i, cultureName));
46+
3247
// 添加 Json 文件流到配置
33-
foreach (var h in langHandlers)
48+
foreach (var s in streams)
3449
{
35-
builder.AddJsonStream(h);
50+
builder.AddJsonStream(s);
3651
}
3752

3853
// 获得配置外置资源文件
@@ -53,25 +68,15 @@ public static IEnumerable<IConfigurationSection> GetJsonStringFromAssembly(this
5368
var config = builder.Build();
5469

5570
// dispose json stream
56-
foreach (var h in langHandlers)
71+
foreach (var s in streams)
5772
{
58-
h.Dispose();
73+
s.Dispose();
5974
}
75+
6076
return config.GetChildren();
61-
}
6277

63-
private static IEnumerable<Stream> GetJsonHandlers(this JsonLocalizationOptions option, Assembly assembly, string cultureName)
64-
{
65-
// 获取程序集中的资源文件
66-
var assemblies = new List<Assembly>()
67-
{
68-
assembly
69-
};
70-
if (option.AdditionalJsonAssemblies != null)
71-
{
72-
assemblies.AddRange(option.AdditionalJsonAssemblies);
73-
}
74-
return assemblies.SelectMany(i => option.GetResourceStream(i, cultureName));
78+
[ExcludeFromCodeCoverage]
79+
Assembly GetAssembly() => Assembly.GetEntryAssembly() ?? assembly;
7580
}
7681

7782
private static List<Stream> GetResourceStream(this JsonLocalizationOptions option, Assembly assembly, string cultureName)

0 commit comments

Comments
 (0)