From 84e5b0f4608cd3b0c6c9b4516a1c44ed6a317f51 Mon Sep 17 00:00:00 2001 From: Louwar Date: Wed, 16 Nov 2022 09:47:20 +0100 Subject: [PATCH] Add globalisation et localisation --- .../Controllers/CultureController.cs | 31 +++ ValblazeProject/Pages/Index.razor | 9 +- ValblazeProject/Pages/List.razor | 2 +- ValblazeProject/Pages/List.razor.cs | 4 + ValblazeProject/Program.cs | 39 +++- .../Resources/Pages.List.fr-FR.resx | 123 +++++++++++ ValblazeProject/Resources/Pages.List.resx | 123 +++++++++++ ValblazeProject/Shared/CultureSelector.razor | 43 ++++ ValblazeProject/Shared/MainLayout.razor | 2 +- ValblazeProject/ValblazeProject.csproj | 1 + .../Debug/net6.0/ValblazeProject.assets.cache | Bin 9942 -> 11060 bytes .../ValblazeProject.csproj.nuget.dgspec.json | 4 + .../ValblazeProject.csproj.nuget.g.targets | 1 + ValblazeProject/obj/project.assets.json | 194 ++++++++++++++---- 14 files changed, 529 insertions(+), 47 deletions(-) create mode 100644 ValblazeProject/Controllers/CultureController.cs create mode 100644 ValblazeProject/Resources/Pages.List.fr-FR.resx create mode 100644 ValblazeProject/Resources/Pages.List.resx create mode 100644 ValblazeProject/Shared/CultureSelector.razor diff --git a/ValblazeProject/Controllers/CultureController.cs b/ValblazeProject/Controllers/CultureController.cs new file mode 100644 index 0000000..328c28e --- /dev/null +++ b/ValblazeProject/Controllers/CultureController.cs @@ -0,0 +1,31 @@ +using Microsoft.AspNetCore.Localization; +using Microsoft.AspNetCore.Mvc; + +/// +/// The culture controller. +/// +[Route("[controller]/[action]")] +public class CultureController : Controller +{ + /// + /// Sets the culture. + /// + /// The culture. + /// The redirect URI. + /// + /// The action result. + /// + public IActionResult SetCulture(string culture, string redirectUri) + { + if (culture != null) + { + // Define a cookie with the selected culture + this.HttpContext.Response.Cookies.Append( + CookieRequestCultureProvider.DefaultCookieName, + CookieRequestCultureProvider.MakeCookieValue( + new RequestCulture(culture))); + } + + return this.LocalRedirect(redirectUri); + } +} \ No newline at end of file diff --git a/ValblazeProject/Pages/Index.razor b/ValblazeProject/Pages/Index.razor index 6085c4a..85f572e 100644 --- a/ValblazeProject/Pages/Index.razor +++ b/ValblazeProject/Pages/Index.razor @@ -1,4 +1,6 @@ -@page "/" +@using System.Globalization + +@page "/" Index @@ -6,4 +8,9 @@ Welcome to your new app. +

+ CurrentCulture: @CultureInfo.CurrentCulture +

+ + diff --git a/ValblazeProject/Pages/List.razor b/ValblazeProject/Pages/List.razor index a4a8c51..4570e93 100644 --- a/ValblazeProject/Pages/List.razor +++ b/ValblazeProject/Pages/List.razor @@ -1,7 +1,7 @@ @page "/list" @using ValblazeProject.Models -

List

+

@Localizer["Title"]

diff --git a/ValblazeProject/Pages/List.razor.cs b/ValblazeProject/Pages/List.razor.cs index d79954d..b54f125 100644 --- a/ValblazeProject/Pages/List.razor.cs +++ b/ValblazeProject/Pages/List.razor.cs @@ -3,6 +3,7 @@ using Blazored.Modal; using Blazored.Modal.Services; using Blazorise.DataGrid; using Microsoft.AspNetCore.Components; +using Microsoft.Extensions.Localization; using ValblazeProject.Modals; using ValblazeProject.Models; using ValblazeProject.Services; @@ -15,6 +16,9 @@ namespace ValblazeProject.Pages private int totalItem; + [Inject] + public IStringLocalizer Localizer { get; set; } + [Inject] public IDataService DataService { get; set; } diff --git a/ValblazeProject/Program.cs b/ValblazeProject/Program.cs index 0c2f3f3..1b1a1fb 100644 --- a/ValblazeProject/Program.cs +++ b/ValblazeProject/Program.cs @@ -7,6 +7,9 @@ using Microsoft.AspNetCore.Components.Web; using ValblazeProject.Data; using ValblazeProject.Services; using Blazored.Modal; +using Microsoft.AspNetCore.Localization; +using System.Globalization; +using Microsoft.Extensions.Options; var builder = WebApplication.CreateBuilder(args); @@ -21,8 +24,6 @@ builder.Services.AddSingleton(); builder.Services.AddSingleton(); builder.Services.AddHttpClient(); -builder.Services.AddBlazoredModal(); - builder.Services .AddBlazorise() .AddBootstrapProviders() @@ -30,6 +31,25 @@ builder.Services builder.Services.AddBlazoredLocalStorage(); +builder.Services.AddBlazoredModal(); + +// Add the controller of the app +builder.Services.AddControllers(); + +// Add the localization to the app and specify the resources path +builder.Services.AddLocalization(opts => { opts.ResourcesPath = "Resources"; }); + +// Configure the localtization +builder.Services.Configure(options => +{ + // Set the default culture of the web site + options.DefaultRequestCulture = new RequestCulture(new CultureInfo("en-US")); + + // Declare the supported culture + options.SupportedCultures = new List { new CultureInfo("en-US"), new CultureInfo("fr-FR") }; + options.SupportedUICultures = new List { new CultureInfo("en-US"), new CultureInfo("fr-FR") }; +}); + var app = builder.Build(); // Configure the HTTP request pipeline. @@ -46,6 +66,21 @@ app.UseStaticFiles(); app.UseRouting(); +// Get the current localization options +var options = ((IApplicationBuilder)app).ApplicationServices.GetService>(); + +if (options?.Value != null) +{ + // use the default localization + app.UseRequestLocalization(options.Value); +} + +// Add the controller to the endpoint +app.UseEndpoints(endpoints => +{ + endpoints.MapControllers(); +}); + app.MapBlazorHub(); app.MapFallbackToPage("/_Host"); diff --git a/ValblazeProject/Resources/Pages.List.fr-FR.resx b/ValblazeProject/Resources/Pages.List.fr-FR.resx new file mode 100644 index 0000000..50bb302 --- /dev/null +++ b/ValblazeProject/Resources/Pages.List.fr-FR.resx @@ -0,0 +1,123 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + Liste des éléments + + \ No newline at end of file diff --git a/ValblazeProject/Resources/Pages.List.resx b/ValblazeProject/Resources/Pages.List.resx new file mode 100644 index 0000000..ae67689 --- /dev/null +++ b/ValblazeProject/Resources/Pages.List.resx @@ -0,0 +1,123 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + Items List + + \ No newline at end of file diff --git a/ValblazeProject/Shared/CultureSelector.razor b/ValblazeProject/Shared/CultureSelector.razor new file mode 100644 index 0000000..6d7f012 --- /dev/null +++ b/ValblazeProject/Shared/CultureSelector.razor @@ -0,0 +1,43 @@ +@using System.Globalization +@inject NavigationManager NavigationManager + +

+ +

+ +@code +{ + private CultureInfo[] supportedCultures = new[] + { + new CultureInfo("en-US"), + new CultureInfo("fr-FR") + }; + + private CultureInfo Culture + { + get => CultureInfo.CurrentCulture; + set + { + if (CultureInfo.CurrentUICulture == value) + { + return; + } + + var culture = value.Name.ToLower(CultureInfo.InvariantCulture); + + var uri = new Uri(this.NavigationManager.Uri).GetComponents(UriComponents.PathAndQuery, UriFormat.Unescaped); + var query = $"?culture={Uri.EscapeDataString(culture)}&" + $"redirectUri={Uri.EscapeDataString(uri)}"; + + // Redirect the user to the culture controller to set the cookie + this.NavigationManager.NavigateTo("/Culture/SetCulture" + query, forceLoad: true); + } + } +} \ No newline at end of file diff --git a/ValblazeProject/Shared/MainLayout.razor b/ValblazeProject/Shared/MainLayout.razor index 72000e8..1fc57ff 100644 --- a/ValblazeProject/Shared/MainLayout.razor +++ b/ValblazeProject/Shared/MainLayout.razor @@ -9,7 +9,7 @@
- @Body +
diff --git a/ValblazeProject/ValblazeProject.csproj b/ValblazeProject/ValblazeProject.csproj index 8e70e3e..41f301b 100644 --- a/ValblazeProject/ValblazeProject.csproj +++ b/ValblazeProject/ValblazeProject.csproj @@ -12,6 +12,7 @@ + diff --git a/ValblazeProject/obj/Debug/net6.0/ValblazeProject.assets.cache b/ValblazeProject/obj/Debug/net6.0/ValblazeProject.assets.cache index e387151b85587d658722fe07ca0878e340ad6912..a971e0e59274f3b38b3e334579c4abdb5ebaa1dd 100644 GIT binary patch delta 1862 zcmb_dOK1~O6zwD?og}R$tz)NYBWdhZleW`I+S;$$sF#E@xIASohC1W;Dbw&_s%`{y_1_{iGJO~}S#)MG5A{CUdU8>oUQER08B%ER zFO^uW60ET<$L>7(J+Q`~RL?b3&BF}~Z}K800ex(bWg(`rE9Z7wD>+|Yek1-)5^Py4 z9zGXNgwN06W)R+5t(~YTFQpm2+I;Y2ixpOCEWq3R4pBvr4ARgRxKeX*BVSTi{pxA} z^P`T|yxBI0mE9ED)!8}~yB9z6M^(mGo@JOiSaxy_tvTeJ1Spc(jh1D;Z|!E33$Vm> z;A$sE7e+Tm4@NJ%v|pgE?1Sru33%YBrLOK*THwYO*egb=Y0L+Z{S16?Nbt}o!MloD zDyk1raRt>|d74_OA0AgOQ*#euF8Svq_+sMV(e`mF>JXyvZV$i|7orw846nJn)RiFo zGAF@MMQ_0oNR_5wwTgbQ0W5njck7#Us!Q{BK@$d19j$Xmb36VgH3s$9fT+=oBxKOk zNGo~_vHwk_9He>HTcA`dK`VWHlY%7|Q7;WQi1Tz++uF6`($r1k8bU6r>U+EeYA>># z;XD`c`n63IxIqzy5p;a7w5}v z)M901HPbWDGn#C|n8Ydq)RZ<^kXvoC0t?&bt13{u2B_H?sOKN27^C52Ls>;hW}qktr~xq(5W`GRpFEG- z3v9aaWEma~K@Bu{&B^`3T9Y@ha83Rz$2mD)PIGcAw*Vva&4Ab(h%F}93sqp1v7Fq`6f`+b7`r|zpv#*iv6*NMG&KPnEde57SXI~n zRTM!Z&S$crs0>zBwm?-46Af)9A7yc!{9F{fGwgs7V>0k|OxBftFs diff --git a/ValblazeProject/obj/ValblazeProject.csproj.nuget.dgspec.json b/ValblazeProject/obj/ValblazeProject.csproj.nuget.dgspec.json index 25d83a0..f111f17 100644 --- a/ValblazeProject/obj/ValblazeProject.csproj.nuget.dgspec.json +++ b/ValblazeProject/obj/ValblazeProject.csproj.nuget.dgspec.json @@ -59,6 +59,10 @@ "Blazorise.Icons.FontAwesome": { "target": "Package", "version": "[1.1.2, )" + }, + "Microsoft.Extensions.Localization": { + "target": "Package", + "version": "[7.0.0, )" } }, "imports": [ diff --git a/ValblazeProject/obj/ValblazeProject.csproj.nuget.g.targets b/ValblazeProject/obj/ValblazeProject.csproj.nuget.g.targets index 7009d1d..f4c1b3c 100644 --- a/ValblazeProject/obj/ValblazeProject.csproj.nuget.g.targets +++ b/ValblazeProject/obj/ValblazeProject.csproj.nuget.g.targets @@ -1,6 +1,7 @@  + \ No newline at end of file diff --git a/ValblazeProject/obj/project.assets.json b/ValblazeProject/obj/project.assets.json index d5754a1..c788e17 100644 --- a/ValblazeProject/obj/project.assets.json +++ b/ValblazeProject/obj/project.assets.json @@ -230,7 +230,7 @@ "buildTransitive/netcoreapp3.1/_._": {} } }, - "Microsoft.Extensions.DependencyInjection.Abstractions/6.0.0": { + "Microsoft.Extensions.DependencyInjection.Abstractions/7.0.0": { "type": "package", "compile": { "lib/net6.0/Microsoft.Extensions.DependencyInjection.Abstractions.dll": { @@ -243,10 +243,42 @@ } }, "build": { - "buildTransitive/netcoreapp3.1/_._": {} + "buildTransitive/net6.0/_._": {} + } + }, + "Microsoft.Extensions.Localization/7.0.0": { + "type": "package", + "dependencies": { + "Microsoft.Extensions.DependencyInjection.Abstractions": "7.0.0", + "Microsoft.Extensions.Localization.Abstractions": "7.0.0", + "Microsoft.Extensions.Logging.Abstractions": "7.0.0", + "Microsoft.Extensions.Options": "7.0.0" + }, + "compile": { + "lib/netstandard2.0/Microsoft.Extensions.Localization.dll": { + "related": ".xml" + } + }, + "runtime": { + "lib/netstandard2.0/Microsoft.Extensions.Localization.dll": { + "related": ".xml" + } } }, - "Microsoft.Extensions.Logging.Abstractions/6.0.2": { + "Microsoft.Extensions.Localization.Abstractions/7.0.0": { + "type": "package", + "compile": { + "lib/netstandard2.0/Microsoft.Extensions.Localization.Abstractions.dll": { + "related": ".xml" + } + }, + "runtime": { + "lib/netstandard2.0/Microsoft.Extensions.Localization.Abstractions.dll": { + "related": ".xml" + } + } + }, + "Microsoft.Extensions.Logging.Abstractions/7.0.0": { "type": "package", "compile": { "lib/net6.0/Microsoft.Extensions.Logging.Abstractions.dll": { @@ -259,27 +291,30 @@ } }, "build": { - "buildTransitive/netcoreapp3.1/_._": {} + "buildTransitive/net6.0/Microsoft.Extensions.Logging.Abstractions.targets": {} } }, - "Microsoft.Extensions.Options/6.0.0": { + "Microsoft.Extensions.Options/7.0.0": { "type": "package", "dependencies": { - "Microsoft.Extensions.DependencyInjection.Abstractions": "6.0.0", - "Microsoft.Extensions.Primitives": "6.0.0" + "Microsoft.Extensions.DependencyInjection.Abstractions": "7.0.0", + "Microsoft.Extensions.Primitives": "7.0.0" }, "compile": { - "lib/netstandard2.1/Microsoft.Extensions.Options.dll": { + "lib/net6.0/Microsoft.Extensions.Options.dll": { "related": ".xml" } }, "runtime": { - "lib/netstandard2.1/Microsoft.Extensions.Options.dll": { + "lib/net6.0/Microsoft.Extensions.Options.dll": { "related": ".xml" } + }, + "build": { + "buildTransitive/net6.0/_._": {} } }, - "Microsoft.Extensions.Primitives/6.0.0": { + "Microsoft.Extensions.Primitives/7.0.0": { "type": "package", "dependencies": { "System.Runtime.CompilerServices.Unsafe": "6.0.0" @@ -295,7 +330,7 @@ } }, "build": { - "buildTransitive/netcoreapp3.1/_._": {} + "buildTransitive/net6.0/_._": {} } }, "Microsoft.JSInterop/6.0.9": { @@ -633,35 +668,77 @@ "useSharedDesignerContext.txt" ] }, - "Microsoft.Extensions.DependencyInjection.Abstractions/6.0.0": { - "sha512": "xlzi2IYREJH3/m6+lUrQlujzX8wDitm4QGnUu6kUXTQAWPuZY8i+ticFJbzfqaetLA6KR/rO6Ew/HuYD+bxifg==", + "Microsoft.Extensions.DependencyInjection.Abstractions/7.0.0": { + "sha512": "h3j/QfmFN4S0w4C2A6X7arXij/M/OVw3uQHSOFxnND4DyAzO1F9eMX7Eti7lU/OkSthEE0WzRsfT/Dmx86jzCw==", "type": "package", - "path": "microsoft.extensions.dependencyinjection.abstractions/6.0.0", + "path": "microsoft.extensions.dependencyinjection.abstractions/7.0.0", "files": [ ".nupkg.metadata", ".signature.p7s", "Icon.png", "LICENSE.TXT", "THIRD-PARTY-NOTICES.TXT", + "buildTransitive/net461/Microsoft.Extensions.DependencyInjection.Abstractions.targets", + "buildTransitive/net462/_._", + "buildTransitive/net6.0/_._", "buildTransitive/netcoreapp2.0/Microsoft.Extensions.DependencyInjection.Abstractions.targets", - "buildTransitive/netcoreapp3.1/_._", - "lib/net461/Microsoft.Extensions.DependencyInjection.Abstractions.dll", - "lib/net461/Microsoft.Extensions.DependencyInjection.Abstractions.xml", + "lib/net462/Microsoft.Extensions.DependencyInjection.Abstractions.dll", + "lib/net462/Microsoft.Extensions.DependencyInjection.Abstractions.xml", "lib/net6.0/Microsoft.Extensions.DependencyInjection.Abstractions.dll", "lib/net6.0/Microsoft.Extensions.DependencyInjection.Abstractions.xml", + "lib/net7.0/Microsoft.Extensions.DependencyInjection.Abstractions.dll", + "lib/net7.0/Microsoft.Extensions.DependencyInjection.Abstractions.xml", "lib/netstandard2.0/Microsoft.Extensions.DependencyInjection.Abstractions.dll", "lib/netstandard2.0/Microsoft.Extensions.DependencyInjection.Abstractions.xml", "lib/netstandard2.1/Microsoft.Extensions.DependencyInjection.Abstractions.dll", "lib/netstandard2.1/Microsoft.Extensions.DependencyInjection.Abstractions.xml", - "microsoft.extensions.dependencyinjection.abstractions.6.0.0.nupkg.sha512", + "microsoft.extensions.dependencyinjection.abstractions.7.0.0.nupkg.sha512", "microsoft.extensions.dependencyinjection.abstractions.nuspec", "useSharedDesignerContext.txt" ] }, - "Microsoft.Extensions.Logging.Abstractions/6.0.2": { - "sha512": "pwXCZKaA7m5wgmCj49dW+H1RPSY7U62SKLTQYCcavf/k3Nyt/WnBgAjG4jMGnwy9rElfAZ2KvxvM5CJzJWG0hg==", + "Microsoft.Extensions.Localization/7.0.0": { + "sha512": "hc+3uiY/ZYufz6GC39ODQ1Pk9lMnSg+ORZIIEv7W2VJpekc43GoJ3EcwDu5ggLcVvb8ff87peXt8WEtbCVsWPQ==", + "type": "package", + "path": "microsoft.extensions.localization/7.0.0", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "Icon.png", + "THIRD-PARTY-NOTICES.TXT", + "lib/net462/Microsoft.Extensions.Localization.dll", + "lib/net462/Microsoft.Extensions.Localization.xml", + "lib/net7.0/Microsoft.Extensions.Localization.dll", + "lib/net7.0/Microsoft.Extensions.Localization.xml", + "lib/netstandard2.0/Microsoft.Extensions.Localization.dll", + "lib/netstandard2.0/Microsoft.Extensions.Localization.xml", + "microsoft.extensions.localization.7.0.0.nupkg.sha512", + "microsoft.extensions.localization.nuspec" + ] + }, + "Microsoft.Extensions.Localization.Abstractions/7.0.0": { + "sha512": "OhKe14cdR3aNJ2eFUrLIKEEXAmudZD7TmV+Exw9Y1OWCaV2vkvp4DLnz0GgYbRGpTPPgS50f1c/hK7JkV3uVcA==", "type": "package", - "path": "microsoft.extensions.logging.abstractions/6.0.2", + "path": "microsoft.extensions.localization.abstractions/7.0.0", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "Icon.png", + "THIRD-PARTY-NOTICES.TXT", + "lib/net462/Microsoft.Extensions.Localization.Abstractions.dll", + "lib/net462/Microsoft.Extensions.Localization.Abstractions.xml", + "lib/net7.0/Microsoft.Extensions.Localization.Abstractions.dll", + "lib/net7.0/Microsoft.Extensions.Localization.Abstractions.xml", + "lib/netstandard2.0/Microsoft.Extensions.Localization.Abstractions.dll", + "lib/netstandard2.0/Microsoft.Extensions.Localization.Abstractions.xml", + "microsoft.extensions.localization.abstractions.7.0.0.nupkg.sha512", + "microsoft.extensions.localization.abstractions.nuspec" + ] + }, + "Microsoft.Extensions.Logging.Abstractions/7.0.0": { + "sha512": "kmn78+LPVMOWeITUjIlfxUPDsI0R6G0RkeAMBmQxAJ7vBJn4q2dTva7pWi65ceN5vPGjJ9q/Uae2WKgvfktJAw==", + "type": "package", + "path": "microsoft.extensions.logging.abstractions/7.0.0", "files": [ ".nupkg.metadata", ".signature.p7s", @@ -696,62 +773,90 @@ "analyzers/dotnet/roslyn4.0/cs/tr/Microsoft.Extensions.Logging.Generators.resources.dll", "analyzers/dotnet/roslyn4.0/cs/zh-Hans/Microsoft.Extensions.Logging.Generators.resources.dll", "analyzers/dotnet/roslyn4.0/cs/zh-Hant/Microsoft.Extensions.Logging.Generators.resources.dll", - "build/Microsoft.Extensions.Logging.Abstractions.targets", + "analyzers/dotnet/roslyn4.4/cs/Microsoft.Extensions.Logging.Generators.dll", + "analyzers/dotnet/roslyn4.4/cs/cs/Microsoft.Extensions.Logging.Generators.resources.dll", + "analyzers/dotnet/roslyn4.4/cs/de/Microsoft.Extensions.Logging.Generators.resources.dll", + "analyzers/dotnet/roslyn4.4/cs/es/Microsoft.Extensions.Logging.Generators.resources.dll", + "analyzers/dotnet/roslyn4.4/cs/fr/Microsoft.Extensions.Logging.Generators.resources.dll", + "analyzers/dotnet/roslyn4.4/cs/it/Microsoft.Extensions.Logging.Generators.resources.dll", + "analyzers/dotnet/roslyn4.4/cs/ja/Microsoft.Extensions.Logging.Generators.resources.dll", + "analyzers/dotnet/roslyn4.4/cs/ko/Microsoft.Extensions.Logging.Generators.resources.dll", + "analyzers/dotnet/roslyn4.4/cs/pl/Microsoft.Extensions.Logging.Generators.resources.dll", + "analyzers/dotnet/roslyn4.4/cs/pt-BR/Microsoft.Extensions.Logging.Generators.resources.dll", + "analyzers/dotnet/roslyn4.4/cs/ru/Microsoft.Extensions.Logging.Generators.resources.dll", + "analyzers/dotnet/roslyn4.4/cs/tr/Microsoft.Extensions.Logging.Generators.resources.dll", + "analyzers/dotnet/roslyn4.4/cs/zh-Hans/Microsoft.Extensions.Logging.Generators.resources.dll", + "analyzers/dotnet/roslyn4.4/cs/zh-Hant/Microsoft.Extensions.Logging.Generators.resources.dll", + "buildTransitive/net461/Microsoft.Extensions.Logging.Abstractions.targets", + "buildTransitive/net462/Microsoft.Extensions.Logging.Abstractions.targets", + "buildTransitive/net6.0/Microsoft.Extensions.Logging.Abstractions.targets", "buildTransitive/netcoreapp2.0/Microsoft.Extensions.Logging.Abstractions.targets", - "buildTransitive/netcoreapp3.1/_._", - "lib/net461/Microsoft.Extensions.Logging.Abstractions.dll", - "lib/net461/Microsoft.Extensions.Logging.Abstractions.xml", + "buildTransitive/netstandard2.0/Microsoft.Extensions.Logging.Abstractions.targets", + "lib/net462/Microsoft.Extensions.Logging.Abstractions.dll", + "lib/net462/Microsoft.Extensions.Logging.Abstractions.xml", "lib/net6.0/Microsoft.Extensions.Logging.Abstractions.dll", "lib/net6.0/Microsoft.Extensions.Logging.Abstractions.xml", + "lib/net7.0/Microsoft.Extensions.Logging.Abstractions.dll", + "lib/net7.0/Microsoft.Extensions.Logging.Abstractions.xml", "lib/netstandard2.0/Microsoft.Extensions.Logging.Abstractions.dll", "lib/netstandard2.0/Microsoft.Extensions.Logging.Abstractions.xml", - "microsoft.extensions.logging.abstractions.6.0.2.nupkg.sha512", + "microsoft.extensions.logging.abstractions.7.0.0.nupkg.sha512", "microsoft.extensions.logging.abstractions.nuspec", "useSharedDesignerContext.txt" ] }, - "Microsoft.Extensions.Options/6.0.0": { - "sha512": "dzXN0+V1AyjOe2xcJ86Qbo233KHuLEY0njf/P2Kw8SfJU+d45HNS2ctJdnEnrWbM9Ye2eFgaC5Mj9otRMU6IsQ==", + "Microsoft.Extensions.Options/7.0.0": { + "sha512": "lP1yBnTTU42cKpMozuafbvNtQ7QcBjr/CcK3bYOGEMH55Fjt+iecXjT6chR7vbgCMqy3PG3aNQSZgo/EuY/9qQ==", "type": "package", - "path": "microsoft.extensions.options/6.0.0", + "path": "microsoft.extensions.options/7.0.0", "files": [ ".nupkg.metadata", ".signature.p7s", "Icon.png", "LICENSE.TXT", "THIRD-PARTY-NOTICES.TXT", - "lib/net461/Microsoft.Extensions.Options.dll", - "lib/net461/Microsoft.Extensions.Options.xml", + "buildTransitive/net461/Microsoft.Extensions.Options.targets", + "buildTransitive/net462/_._", + "buildTransitive/net6.0/_._", + "buildTransitive/netcoreapp2.0/Microsoft.Extensions.Options.targets", + "lib/net462/Microsoft.Extensions.Options.dll", + "lib/net462/Microsoft.Extensions.Options.xml", + "lib/net6.0/Microsoft.Extensions.Options.dll", + "lib/net6.0/Microsoft.Extensions.Options.xml", + "lib/net7.0/Microsoft.Extensions.Options.dll", + "lib/net7.0/Microsoft.Extensions.Options.xml", "lib/netstandard2.0/Microsoft.Extensions.Options.dll", "lib/netstandard2.0/Microsoft.Extensions.Options.xml", "lib/netstandard2.1/Microsoft.Extensions.Options.dll", "lib/netstandard2.1/Microsoft.Extensions.Options.xml", - "microsoft.extensions.options.6.0.0.nupkg.sha512", + "microsoft.extensions.options.7.0.0.nupkg.sha512", "microsoft.extensions.options.nuspec", "useSharedDesignerContext.txt" ] }, - "Microsoft.Extensions.Primitives/6.0.0": { - "sha512": "9+PnzmQFfEFNR9J2aDTfJGGupShHjOuGw4VUv+JB044biSHrnmCIMD+mJHmb2H7YryrfBEXDurxQ47gJZdCKNQ==", + "Microsoft.Extensions.Primitives/7.0.0": { + "sha512": "um1KU5kxcRp3CNuI8o/GrZtD4AIOXDk+RLsytjZ9QPok3ttLUelLKpilVPuaFT3TFjOhSibUAso0odbOaCDj3Q==", "type": "package", - "path": "microsoft.extensions.primitives/6.0.0", + "path": "microsoft.extensions.primitives/7.0.0", "files": [ ".nupkg.metadata", ".signature.p7s", "Icon.png", "LICENSE.TXT", "THIRD-PARTY-NOTICES.TXT", + "buildTransitive/net461/Microsoft.Extensions.Primitives.targets", + "buildTransitive/net462/_._", + "buildTransitive/net6.0/_._", "buildTransitive/netcoreapp2.0/Microsoft.Extensions.Primitives.targets", - "buildTransitive/netcoreapp3.1/_._", - "lib/net461/Microsoft.Extensions.Primitives.dll", - "lib/net461/Microsoft.Extensions.Primitives.xml", + "lib/net462/Microsoft.Extensions.Primitives.dll", + "lib/net462/Microsoft.Extensions.Primitives.xml", "lib/net6.0/Microsoft.Extensions.Primitives.dll", "lib/net6.0/Microsoft.Extensions.Primitives.xml", - "lib/netcoreapp3.1/Microsoft.Extensions.Primitives.dll", - "lib/netcoreapp3.1/Microsoft.Extensions.Primitives.xml", + "lib/net7.0/Microsoft.Extensions.Primitives.dll", + "lib/net7.0/Microsoft.Extensions.Primitives.xml", "lib/netstandard2.0/Microsoft.Extensions.Primitives.dll", "lib/netstandard2.0/Microsoft.Extensions.Primitives.xml", - "microsoft.extensions.primitives.6.0.0.nupkg.sha512", + "microsoft.extensions.primitives.7.0.0.nupkg.sha512", "microsoft.extensions.primitives.nuspec", "useSharedDesignerContext.txt" ] @@ -843,7 +948,8 @@ "Blazored.Modal >= 7.1.0", "Blazorise.Bootstrap >= 1.1.2", "Blazorise.DataGrid >= 1.1.2", - "Blazorise.Icons.FontAwesome >= 1.1.2" + "Blazorise.Icons.FontAwesome >= 1.1.2", + "Microsoft.Extensions.Localization >= 7.0.0" ] }, "packageFolders": { @@ -904,6 +1010,10 @@ "Blazorise.Icons.FontAwesome": { "target": "Package", "version": "[1.1.2, )" + }, + "Microsoft.Extensions.Localization": { + "target": "Package", + "version": "[7.0.0, )" } }, "imports": [