Skip to content

Commit 84614c8

Browse files
authored
Merge pull request #42 from xinshoushangdao/main
support chinese language
2 parents eba7402 + f422002 commit 84614c8

28 files changed

+1774
-113
lines changed

demo/RulesEngineEditorServer/Pages/_Host.cshtml

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
@*
1+
@*
22
// Copyright (c) Alex Reich.
33
// Licensed under the CC BY 4.0 License.
44
*@
@@ -38,5 +38,6 @@
3838
</div>
3939

4040
<script src="_framework/blazor.server.js"></script>
41+
<script src="culture.js"></script>
4142
</body>
4243
</html>

demo/RulesEngineEditorServer/Shared/MainLayout.razor

Lines changed: 8 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,9 @@
1-
@*
1+
@*
22
// Copyright (c) Alex Reich.
33
// Licensed under the CC BY 4.0 License.
44
*@
55
@inherits LayoutComponentBase
6+
@using RulesEngineEditor.Resources
67

78
<div class="page">
89
<div class="@NavMenuCssClass" @onclick="ToggleNavMenu">
@@ -14,11 +15,13 @@
1415
<button class="navbar-toggler" hidden="@(!collapseNavMenu)" @onclick="ToggleNavMenu">
1516
<span class="navbar-toggler-icon"></span>
1617
</button>
17-
<a class="navbar-brand" href="">Rules Engine Editor</a>
18+
<a class="navbar-brand" href="">@RulesEngineEditor.Resources.SharedResources.RulesEngineEditorTitle</a>
1819
<div class="float-right">
19-
<a href="/demo">Demo (sample data)</a>
20+
<a href="/demo">@RulesEngineEditor.Resources.SharedResources.DemoSampleData</a>
2021
&nbsp;
21-
<a href="https://github.com/alexreich/RulesEngineEditor" target="_blank">About</a>
22+
<a href="https://github.com/alexreich/RulesEngineEditor" target="_blank">@RulesEngineEditor.Resources.SharedResources.About</a>
23+
&nbsp;
24+
<RulesEngineEditor.Components.CultureSwitcher />
2225
</div>
2326
</div>
2427
</div>
@@ -37,4 +40,4 @@
3740
{
3841
collapseNavMenu = !collapseNavMenu;
3942
}
40-
}
43+
}

demo/RulesEngineEditorServer/Shared/NavMenu.razor

Lines changed: 7 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,32 +1,33 @@
1-
@*
1+
@*
22
// Copyright (c) Alex Reich.
33
// Licensed under the CC BY 4.0 License.
44
*@
5+
@using RulesEngineEditor.Resources
56
<div>
67
<ul class="nav flex-column">
78
<li class="nav-item px-3">
89
<NavLink class="nav-link" href="" Match="NavLinkMatch.All">
9-
<span class="oi oi-home" aria-hidden="true"></span> Home
10+
<span class="oi oi-home" aria-hidden="true"></span> @RulesEngineEditor.Resources.SharedResources.Home
1011
</NavLink>
1112
</li>
1213
<li class="nav-item px-3">
1314
<NavLink class="nav-link" href="demo">
14-
<span class="oi oi-book" aria-hidden="true"></span> Demo
15+
<span class="oi oi-book" aria-hidden="true"></span> @RulesEngineEditor.Resources.SharedResources.Demo
1516
</NavLink>
1617
</li>
1718
<li class="nav-item px-3">
1819
<NavLink class="nav-link" href="demoef">
19-
<span class="oi oi-book" aria-hidden="true"></span> Demo&nbsp; <sup>Enitty Framework</sup>
20+
<span class="oi oi-book" aria-hidden="true"></span> @RulesEngineEditor.Resources.SharedResources.DemoEF
2021
</NavLink>
2122
</li>
2223
<li class="nav-item px-3">
2324
<NavLink class="nav-link" href="new">
24-
<span class="oi oi-aperture" aria-hidden="true"></span> New
25+
<span class="oi oi-aperture" aria-hidden="true"></span> @RulesEngineEditor.Resources.SharedResources.New
2526
</NavLink>
2627
</li>
2728
<li class="nav-item px-3">
2829
<NavLink class="nav-link" href="standalone">
29-
<span class="oi oi-fullscreen-enter" aria-hidden="true"></span> Standalone
30+
<span class="oi oi-fullscreen-enter" aria-hidden="true"></span> @RulesEngineEditor.Resources.SharedResources.Standalone
3031
</NavLink>
3132
</li>
3233
</ul>

demo/RulesEngineEditorServer/Startup.cs

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,8 @@
1616
using RulesEngineEditor.Services;
1717
using RulesEngineEditor.Data;
1818
using Microsoft.EntityFrameworkCore;
19+
using Microsoft.AspNetCore.Localization;
20+
using System.Globalization;
1921

2022
namespace RulesEngineEditorServer
2123
{
@@ -34,6 +36,7 @@ public void ConfigureServices(IServiceCollection services)
3436
{
3537
services.AddRazorPages();
3638
services.AddServerSideBlazor();
39+
services.AddLocalization(options => options.ResourcesPath = "Resources");
3740
services.AddSingleton<WeatherForecastService>();
3841

3942
//services.AddDbContext<RulesEngineEditorDbContext>(options => options.UseSqlServer(Configuration.GetConnectionString("RulesEngineEditorDB")));
@@ -45,6 +48,14 @@ public void ConfigureServices(IServiceCollection services)
4548
// This method gets called by the runtime. Use this method to configure the HTTP request pipeline.
4649
public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
4750
{
51+
var supportedCultures = new[] { new CultureInfo("en-US"), new CultureInfo("zh-CN") };
52+
var localizationOptions = new RequestLocalizationOptions
53+
{
54+
DefaultRequestCulture = new RequestCulture("en-US"),
55+
SupportedCultures = supportedCultures,
56+
SupportedUICultures = supportedCultures
57+
};
58+
app.UseRequestLocalization(localizationOptions);
4859
if (env.IsDevelopment())
4960
{
5061
app.UseDeveloperExceptionPage();
Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
window.blazorCulture = {
2+
get: function () {
3+
return window.localStorage['BlazorCulture'];
4+
},
5+
set: function (value) {
6+
window.localStorage['BlazorCulture'] = value;
7+
}
8+
};
9+
10+
window.setCultureCookie = function (culture) {
11+
var cookieValue = 'c=' + culture + '|uic=' + culture;
12+
var secure = (location.protocol === 'https:') ? '; secure' : '';
13+
document.cookie = '.AspNetCore.Culture=' + cookieValue + '; path=/; samesite=lax' + secure;
14+
};

demo/RulesEngineEditorWebAssembly/Program.cs

Lines changed: 14 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,8 @@
1313
using RulesEngineEditor.Services;
1414
using System.Text.Json;
1515
using RulesEngineEditor.Shared;
16+
using Microsoft.JSInterop;
17+
using System.Globalization;
1618

1719
namespace RulesEngineEditorWebAssembly
1820
{
@@ -27,13 +29,24 @@ public static async Task Main(string[] args)
2729
builder.Services.AddScoped(sp => new HttpClient { BaseAddress = new Uri(builder.HostEnvironment.BaseAddress) });
2830

2931
builder.Services.AddRulesEngineEditor();
32+
builder.Services.AddLocalization();
3033

3134
builder.Services.AddScoped<JsonSerializerOptions>(sp =>
3235
{
3336
return RulesEngineEditor.Shared.RulesEngineJsonSourceContext.Default.Options;
3437
});
3538

36-
await builder.Build().RunAsync();
39+
var host = builder.Build();
40+
var js = host.Services.GetRequiredService<IJSRuntime>();
41+
var cultureName = await js.InvokeAsync<string>("blazorCulture.get");
42+
if (string.IsNullOrWhiteSpace(cultureName))
43+
{
44+
cultureName = "en-US";
45+
}
46+
var culture = new CultureInfo(cultureName);
47+
CultureInfo.DefaultThreadCurrentCulture = culture;
48+
CultureInfo.DefaultThreadCurrentUICulture = culture;
49+
await host.RunAsync();
3750
}
3851
}
3952
}

demo/RulesEngineEditorWebAssembly/RulesEngineEditorWebAssembly.csproj

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@
77
<GenerateJsonSerializerAttribute>true</GenerateJsonSerializerAttribute>
88
<WasmEnableAOT>true</WasmEnableAOT>
99
<EnablePreviewFeatures>true</EnablePreviewFeatures>
10+
<BlazorWebAssemblyLoadAllGlobalizationData>true</BlazorWebAssemblyLoadAllGlobalizationData>
1011
</PropertyGroup>
1112
<ItemGroup>
1213
<ProjectReference Include="..\..\src\RulesEngineEditor\RulesEngineEditor.csproj" />
@@ -30,5 +31,6 @@
3031
<PackageReference Include="Microsoft.AspNetCore.Components.WebAssembly.DevServer" Version="8.0.14" />
3132
<PackageReference Include="Newtonsoft.Json" Version="13.0.3" />
3233
<PackageReference Include="System.Net.Http.Json" Version="8.0.1" />
34+
<PackageReference Include="Microsoft.Extensions.Localization" Version="8.0.0" />
3335
</ItemGroup>
3436
</Project>

demo/RulesEngineEditorWebAssembly/Shared/MainLayout.razor

Lines changed: 8 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,9 @@
1-
@*
1+
@*
22
// Copyright (c) Alex Reich.
33
// Licensed under the CC BY 4.0 License.
44
*@
55
@inherits LayoutComponentBase
6+
@using RulesEngineEditor.Resources
67

78
<div class="page">
89
<div class="@NavMenuCssClass" @onclick="ToggleNavMenu">
@@ -14,11 +15,13 @@
1415
<button class="navbar-toggler" hidden="@(!collapseNavMenu)" @onclick="ToggleNavMenu">
1516
<span class="navbar-toggler-icon"></span>
1617
</button>
17-
<a class="navbar-brand" href="">Rules Engine Editor</a>
18+
<a class="navbar-brand" href="">@RulesEngineEditor.Resources.SharedResources.RulesEngineEditorTitle</a>
1819
<div class="float-right">
19-
<a href="demo">Demo (sample data)</a>
20+
<a href="demo">@RulesEngineEditor.Resources.SharedResources.DemoSampleData</a>
2021
&nbsp;
21-
<a href="https://github.com/alexreich/RulesEngineEditor" target="_blank">About</a>
22+
<a href="https://github.com/alexreich/RulesEngineEditor" target="_blank">@RulesEngineEditor.Resources.SharedResources.About</a>
23+
&nbsp;
24+
<RulesEngineEditor.Components.CultureSwitcher />
2225
</div>
2326
</div>
2427
</div>
@@ -37,4 +40,4 @@
3740
{
3841
collapseNavMenu = !collapseNavMenu;
3942
}
40-
}
43+
}
Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,29 +1,29 @@
1-
@*
1+
@*
22
// Copyright (c) Alex Reich.
33
// Licensed under the CC BY 4.0 License.
44
*@
5+
@using RulesEngineEditor.Resources
56
<div>
67
<ul class="nav flex-column">
78
<li class="nav-item px-3">
89
<NavLink class="nav-link" href="" Match="NavLinkMatch.All">
9-
<span class="oi oi-home" aria-hidden="true"></span> Home
10+
<span class="oi oi-home" aria-hidden="true"></span> @RulesEngineEditor.Resources.SharedResources.Home
1011
</NavLink>
1112
</li>
1213
<li class="nav-item px-3">
1314
<NavLink class="nav-link" href="demo">
14-
<span class="oi oi-book" aria-hidden="true"></span> Demo
15+
<span class="oi oi-book" aria-hidden="true"></span> @RulesEngineEditor.Resources.SharedResources.Demo
1516
</NavLink>
1617
</li>
1718
<li class="nav-item px-3">
1819
<NavLink class="nav-link" href="new">
19-
<span class="oi oi-aperture" aria-hidden="true"></span> New
20+
<span class="oi oi-aperture" aria-hidden="true"></span> @RulesEngineEditor.Resources.SharedResources.New
2021
</NavLink>
2122
</li>
2223
<li class="nav-item px-3">
2324
<NavLink class="nav-link" href="standalone">
24-
<span class="oi oi-fullscreen-enter" aria-hidden="true"></span> Standalone
25+
<span class="oi oi-fullscreen-enter" aria-hidden="true"></span> @RulesEngineEditor.Resources.SharedResources.Standalone
2526
</NavLink>
2627
</li>
2728
</ul>
2829
</div>
29-
Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
window.blazorCulture = {
2+
get: function () {
3+
return window.localStorage['BlazorCulture'];
4+
},
5+
set: function (value) {
6+
window.localStorage['BlazorCulture'] = value;
7+
}
8+
};
9+
10+
window.setCultureCookie = function (culture) {
11+
var cookieValue = 'c=' + culture + '|uic=' + culture;
12+
var secure = (location.protocol === 'https:') ? '; secure' : '';
13+
document.cookie = '.AspNetCore.Culture=' + cookieValue + '; path=/; samesite=lax' + secure;
14+
};

0 commit comments

Comments
 (0)