From e0f3f01d8d7c31c5c08c4b26ef74d55860af40e3 Mon Sep 17 00:00:00 2001 From: lebeaulato Date: Mon, 27 Jan 2025 11:55:17 +0100 Subject: [PATCH] test encore de cette langue qui marche pas --- .../Controllers/CultureController.cs | 31 +++++ .../WF-WebAdmin/Pages/DeleteUser.razor | 3 +- .../WF-WebAdmin/Pages/DeleteUser.razor.cs | 4 + WF-WebAdmin/WF-WebAdmin/Pages/Login.razor | 5 +- WF-WebAdmin/WF-WebAdmin/Program.cs | 40 +++++- .../Resources/Pages.DeleteUser.en-US.resx | 123 ++++++++++++++++++ .../Resources/Pages.DeleteUser.fr-FR.resx | 123 ++++++++++++++++++ .../WF-WebAdmin/Shared/CultureSelector.razor | 43 ++++++ .../WF-WebAdmin/Shared/MainLayout.razor | 3 + WF-WebAdmin/WF-WebAdmin/WF-WebAdmin.csproj | 12 ++ WF-WebAdmin/WF-WebAdmin/_Imports.razor | 1 + 11 files changed, 385 insertions(+), 3 deletions(-) create mode 100644 WF-WebAdmin/WF-WebAdmin/Controllers/CultureController.cs create mode 100644 WF-WebAdmin/WF-WebAdmin/Resources/Pages.DeleteUser.en-US.resx create mode 100644 WF-WebAdmin/WF-WebAdmin/Resources/Pages.DeleteUser.fr-FR.resx create mode 100644 WF-WebAdmin/WF-WebAdmin/Shared/CultureSelector.razor diff --git a/WF-WebAdmin/WF-WebAdmin/Controllers/CultureController.cs b/WF-WebAdmin/WF-WebAdmin/Controllers/CultureController.cs new file mode 100644 index 0000000..8f8cfec --- /dev/null +++ b/WF-WebAdmin/WF-WebAdmin/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/WF-WebAdmin/WF-WebAdmin/Pages/DeleteUser.razor b/WF-WebAdmin/WF-WebAdmin/Pages/DeleteUser.razor index c0c86ce..e867a87 100644 --- a/WF-WebAdmin/WF-WebAdmin/Pages/DeleteUser.razor +++ b/WF-WebAdmin/WF-WebAdmin/Pages/DeleteUser.razor @@ -1,8 +1,9 @@ @page "/deleteuser" +@using WF_WebAdmin.Model Gestion utilisateur -

Gestion des utilisateurs

+

@Localizer["Title"]

@if(users == null) { diff --git a/WF-WebAdmin/WF-WebAdmin/Pages/DeleteUser.razor.cs b/WF-WebAdmin/WF-WebAdmin/Pages/DeleteUser.razor.cs index b14bdec..ce460da 100644 --- a/WF-WebAdmin/WF-WebAdmin/Pages/DeleteUser.razor.cs +++ b/WF-WebAdmin/WF-WebAdmin/Pages/DeleteUser.razor.cs @@ -1,5 +1,7 @@ using Microsoft.AspNetCore.Components; using Microsoft.Extensions.Configuration.UserSecrets; +using Microsoft.Extensions.Localization; +using System.Collections.Generic; using WF_WebAdmin.Model; namespace WF_WebAdmin.Pages @@ -9,6 +11,8 @@ namespace WF_WebAdmin.Pages private List users; + [Inject] + public IStringLocalizer Localizer { get; set; } private bool showPopupDelete = false; private User userToDelete = null; diff --git a/WF-WebAdmin/WF-WebAdmin/Pages/Login.razor b/WF-WebAdmin/WF-WebAdmin/Pages/Login.razor index 411b655..d035565 100644 --- a/WF-WebAdmin/WF-WebAdmin/Pages/Login.razor +++ b/WF-WebAdmin/WF-WebAdmin/Pages/Login.razor @@ -1,5 +1,6 @@ @page "/" @using WF_WebAdmin.Model +@using System.Globalization

▶ Connexion ◀

@@ -22,7 +23,9 @@

Indice de connexion : admin / admin

- +

+ CurrentCulture: @CultureInfo.CurrentCulture +

@code { diff --git a/WF-WebAdmin/WF-WebAdmin/Program.cs b/WF-WebAdmin/WF-WebAdmin/Program.cs index fb07a82..2e00bd1 100644 --- a/WF-WebAdmin/WF-WebAdmin/Program.cs +++ b/WF-WebAdmin/WF-WebAdmin/Program.cs @@ -3,9 +3,13 @@ using Blazorise.Bootstrap; using Blazorise.Icons.FontAwesome; using Microsoft.AspNetCore.Components; using Microsoft.AspNetCore.Components.Web; +using Microsoft.AspNetCore.Localization; +using System.Globalization; using WF_WebAdmin.Data; using WF_WebAdmin.Model; - +using Microsoft.Extensions.Localization; +using Microsoft.Extensions.Options; +using Blazored.Modal; var builder = WebApplication.CreateBuilder(args); // Add services to the container. @@ -22,6 +26,25 @@ builder.Services .AddHttpClient() .AddFontAwesomeIcons(); + +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. @@ -38,6 +61,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/WF-WebAdmin/WF-WebAdmin/Resources/Pages.DeleteUser.en-US.resx b/WF-WebAdmin/WF-WebAdmin/Resources/Pages.DeleteUser.en-US.resx new file mode 100644 index 0000000..edd17b0 --- /dev/null +++ b/WF-WebAdmin/WF-WebAdmin/Resources/Pages.DeleteUser.en-US.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 + + + User management + + \ No newline at end of file diff --git a/WF-WebAdmin/WF-WebAdmin/Resources/Pages.DeleteUser.fr-FR.resx b/WF-WebAdmin/WF-WebAdmin/Resources/Pages.DeleteUser.fr-FR.resx new file mode 100644 index 0000000..8b7d899 --- /dev/null +++ b/WF-WebAdmin/WF-WebAdmin/Resources/Pages.DeleteUser.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 + + + Gestion des utilisateurs + + \ No newline at end of file diff --git a/WF-WebAdmin/WF-WebAdmin/Shared/CultureSelector.razor b/WF-WebAdmin/WF-WebAdmin/Shared/CultureSelector.razor new file mode 100644 index 0000000..44d3c10 --- /dev/null +++ b/WF-WebAdmin/WF-WebAdmin/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/WF-WebAdmin/WF-WebAdmin/Shared/MainLayout.razor b/WF-WebAdmin/WF-WebAdmin/Shared/MainLayout.razor index d62d291..eab28e1 100644 --- a/WF-WebAdmin/WF-WebAdmin/Shared/MainLayout.razor +++ b/WF-WebAdmin/WF-WebAdmin/Shared/MainLayout.razor @@ -15,6 +15,9 @@
+
+ +
@if (!string.IsNullOrEmpty(uLogin.Name)) { diff --git a/WF-WebAdmin/WF-WebAdmin/WF-WebAdmin.csproj b/WF-WebAdmin/WF-WebAdmin/WF-WebAdmin.csproj index a060d8e..f3b9e76 100644 --- a/WF-WebAdmin/WF-WebAdmin/WF-WebAdmin.csproj +++ b/WF-WebAdmin/WF-WebAdmin/WF-WebAdmin.csproj @@ -8,11 +8,23 @@ + + + + + + + + PublicResXFileCodeGenerator + + + PublicResXFileCodeGenerator + diff --git a/WF-WebAdmin/WF-WebAdmin/_Imports.razor b/WF-WebAdmin/WF-WebAdmin/_Imports.razor index cbc1f08..ebfca63 100644 --- a/WF-WebAdmin/WF-WebAdmin/_Imports.razor +++ b/WF-WebAdmin/WF-WebAdmin/_Imports.razor @@ -9,4 +9,5 @@ @using WF_WebAdmin @using WF_WebAdmin.Shared @using Blazorise.DataGrid +@using Blazored.Modal