Skip to content

Commit 2a51401

Browse files
committed
Refactor & Release 2.0
1 parent 582b9da commit 2a51401

File tree

8 files changed

+64
-61
lines changed

8 files changed

+64
-61
lines changed

README.md

Lines changed: 18 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -21,31 +21,31 @@ public override void ConfigureServices(ServiceConfigurationContext context)
2121
options.Languages.Add(new LanguageInfo("zh-Hans", "zh-Hans", "简体中文"));
2222
options.Languages.Add(new LanguageInfo("tr", "tr", "Türkçe"));
2323
});
24-
25-
Configure<OwlCultureMapOptions>(options =>
26-
{
27-
//Map some language-specific codes to zh-Hans.
28-
var maps = new Dictionary<string, string>
29-
{
30-
{"zh", "zh-Hans"},
31-
{"zh-CN", "zh-Hans"},
32-
{"zh-Hant", "zh-Hans"},
33-
{"zh-TW", "zh-Hans"}
34-
};
35-
36-
options.CulturesMaps = maps;
37-
options.UiCulturesMaps = maps;
38-
});
24+
25+
Configure<OwlCultureMapOptions>(options =>
26+
{
27+
var zhHansCultureMapInfo = new CultureMapInfo
28+
{
29+
TargetCulture = "zh-Hans",
30+
SourceCultures = new List<string>
31+
{
32+
"zh", "zh-CN"
33+
}
34+
};
35+
36+
options.CulturesMaps.Add(zhHansCultureMapInfo);
37+
options.UiCulturesMaps.Add(zhHansCultureMapInfo);
38+
});
3939
}
40-
40+
4141
public override void OnApplicationInitialization(ApplicationInitializationContext context)
4242
{
4343
var app = context.GetApplicationBuilder();
44-
44+
4545
//...
4646
4747
app.UseOwlRequestLocalization();
48-
48+
4949
//...
5050
}
5151
```

example/BookStore/BookStore.csproj

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,8 +5,8 @@
55
</PropertyGroup>
66

77
<ItemGroup>
8-
<PackageReference Include="Volo.Abp.Autofac" Version="3.0.4" />
9-
<PackageReference Include="Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic" Version="3.0.4" />
8+
<PackageReference Include="Volo.Abp.Autofac" Version="3.0.5" />
9+
<PackageReference Include="Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic" Version="3.0.5" />
1010
</ItemGroup>
1111

1212
<ItemGroup>

example/BookStore/BookStoreWebModule.cs

Lines changed: 8 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -38,16 +38,17 @@ public override void ConfigureServices(ServiceConfigurationContext context)
3838

3939
Configure<OwlCultureMapOptions>(options =>
4040
{
41-
var maps = new Dictionary<string, string>
41+
var zhHansCultureMapInfo = new CultureMapInfo
4242
{
43-
{"zh", "zh-Hans"},
44-
{"zh-CN", "zh-Hans"},
45-
{"zh-Hant", "zh-Hans"},
46-
{"zh-TW", "zh-Hans"}
43+
TargetCulture = "zh-Hans",
44+
SourceCultures = new List<string>
45+
{
46+
"zh", "zh-CN", "zh-Hant", "zh-TW"
47+
}
4748
};
4849

49-
options.CulturesMaps = maps;
50-
options.UiCulturesMaps = maps;
50+
options.CulturesMaps.Add(zhHansCultureMapInfo);
51+
options.UiCulturesMaps.Add(zhHansCultureMapInfo);
5152
});
5253
}
5354

src/Owl.Abp.CultureMap/Owl.Abp.CultureMap.csproj

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@
99
<IsPackable>true</IsPackable>
1010
<GeneratePackageOnBuild>true</GeneratePackageOnBuild>
1111
<OutputType>Library</OutputType>
12-
<PackageVersion>1.1.0</PackageVersion>
12+
<PackageVersion>2.0.0</PackageVersion>
1313

1414
<Authors>maliming</Authors>
1515
<RepositoryUrl>https://github.com/maliming/Owl.Abp.CultureMap</RepositoryUrl>
@@ -20,7 +20,7 @@
2020
</PropertyGroup>
2121

2222
<ItemGroup>
23-
<PackageReference Include="Volo.Abp.AspNetCore" Version="3.0.4" />
23+
<PackageReference Include="Volo.Abp.AspNetCore" Version="3.0.5" />
2424
</ItemGroup>
2525

2626
</Project>
Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
using System.Collections.Generic;
2+
3+
namespace Owl.Abp.CultureMap
4+
{
5+
public class CultureMapInfo
6+
{
7+
public string TargetCulture { get; set; }
8+
9+
public List<string> SourceCultures { get; set; }
10+
}
11+
}

src/Owl.Abp.CultureMap/Owl/Abp/CultureMap/OwlApplicationBuilderExtensions.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -10,9 +10,9 @@ public static IApplicationBuilder UseOwlRequestLocalization(this IApplicationBui
1010
{
1111
return app.UseAbpRequestLocalization(options =>
1212
{
13-
optionsAction?.Invoke(options);
1413
options.RequestCultureProviders.Insert(0, new OwlCultureMapRequestCultureProvider());
14+
optionsAction?.Invoke(options);
1515
});
1616
}
1717
}
18-
}
18+
}

src/Owl.Abp.CultureMap/Owl/Abp/CultureMap/OwlCultureMapOptions.cs

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -4,8 +4,8 @@ namespace Owl.Abp.CultureMap
44
{
55
public class OwlCultureMapOptions
66
{
7-
public Dictionary<string, string> CulturesMaps = new Dictionary<string, string>();
8-
9-
public Dictionary<string, string> UiCulturesMaps = new Dictionary<string, string>();
7+
public readonly List<CultureMapInfo> CulturesMaps = new List<CultureMapInfo>();
8+
9+
public readonly List<CultureMapInfo> UiCulturesMaps = new List<CultureMapInfo>();
1010
}
11-
}
11+
}

src/Owl.Abp.CultureMap/Owl/Abp/CultureMap/OwlCultureMapRequestCultureProvider.cs

Lines changed: 17 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -25,10 +25,8 @@ public override async Task<ProviderCultureResult> DetermineProviderCultureResult
2525
var mapCultures = new List<StringSegment>();
2626
var mapUiCultures = new List<StringSegment>();
2727

28-
var requestLocalizationOptionsProvider =
29-
httpContext.RequestServices.GetRequiredService<IAbpRequestLocalizationOptionsProvider>();
30-
foreach (var provider in (await requestLocalizationOptionsProvider.GetLocalizationOptionsAsync())
31-
.RequestCultureProviders)
28+
var requestLocalizationOptionsProvider = httpContext.RequestServices.GetRequiredService<IAbpRequestLocalizationOptionsProvider>();
29+
foreach (var provider in (await requestLocalizationOptionsProvider.GetLocalizationOptionsAsync()).RequestCultureProviders)
3230
{
3331
if (provider == this)
3432
{
@@ -41,28 +39,21 @@ public override async Task<ProviderCultureResult> DetermineProviderCultureResult
4139
continue;
4240
}
4341

44-
var cultures = providerCultureResult.Cultures;
45-
var uiCultures = providerCultureResult.UICultures;
46-
47-
mapCultures.AddRange(cultures.Where(x => x.HasValue)
48-
.Select(culture => option.CulturesMaps.ContainsKey(culture.Value)
49-
? new StringSegment(option.CulturesMaps[culture.Value])
50-
: culture));
51-
52-
mapUiCultures.AddRange(uiCultures.Where(x => x.HasValue)
53-
.Select(culture => option.UiCulturesMaps.ContainsKey(culture.Value)
54-
? new StringSegment(option.UiCulturesMaps[culture.Value])
55-
: culture));
56-
57-
if (mapCultures.Any() || mapUiCultures.Any())
58-
{
59-
break;
60-
}
61-
}
62-
63-
if (mapCultures.IsNullOrEmpty() || mapUiCultures.IsNullOrEmpty())
64-
{
65-
return await NullProviderCultureResult;
42+
mapCultures.AddRange(providerCultureResult.Cultures.Where(x => x.HasValue)
43+
.Select(culture =>
44+
{
45+
var map = option.CulturesMaps.FirstOrDefault(x =>
46+
x.SourceCultures.Contains(culture.Value, StringComparer.OrdinalIgnoreCase));
47+
return new StringSegment(map?.TargetCulture ?? culture.Value);
48+
}));
49+
50+
mapUiCultures.AddRange(providerCultureResult.UICultures.Where(x => x.HasValue)
51+
.Select(culture =>
52+
{
53+
var map = option.UiCulturesMaps.FirstOrDefault(x =>
54+
x.SourceCultures.Contains(culture.Value, StringComparer.OrdinalIgnoreCase));
55+
return new StringSegment(map?.TargetCulture ?? culture.Value);
56+
}));
6657
}
6758

6859
return new ProviderCultureResult(mapCultures, mapUiCultures);

0 commit comments

Comments
 (0)