diff --git a/Wave/Components/App.razor b/Wave/Components/App.razor index 380e323..ac6016b 100644 --- a/Wave/Components/App.razor +++ b/Wave/Components/App.razor @@ -1,5 +1,6 @@ - - +@using System.Globalization + + diff --git a/Wave/Components/Pages/Home.razor b/Wave/Components/Pages/Home.razor index 9001e0b..ca0091d 100644 --- a/Wave/Components/Pages/Home.razor +++ b/Wave/Components/Pages/Home.razor @@ -1,7 +1,10 @@ @page "/" +@using Microsoft.Extensions.Localization + +@inject IStringLocalizer Localizer Home -

Hello, world!

+

@Localizer["Greeting"]

Welcome to your new app. diff --git a/Wave/Program.cs b/Wave/Program.cs index 3c69275..a695688 100644 --- a/Wave/Program.cs +++ b/Wave/Program.cs @@ -11,6 +11,8 @@ // Add services to the container. builder.Services.AddRazorComponents(); +#region Authentication & Authorization + builder.Services.AddCascadingAuthenticationState(); builder.Services.AddScoped(); builder.Services.AddScoped(); @@ -24,6 +26,10 @@ }) .AddIdentityCookies(); +#endregion + +#region Identity + var connectionString = builder.Configuration.GetConnectionString("DefaultConnection") ?? throw new InvalidOperationException("Connection string 'DefaultConnection' not found."); builder.Services.AddDbContext(options => options.UseSqlServer(connectionString)); @@ -36,15 +42,22 @@ builder.Services.AddSingleton, IdentityNoOpEmailSender>(); +#endregion + +#region Services + +builder.Services.AddLocalization(options => { + options.ResourcesPath = "Resources"; +}); + +#endregion + var app = builder.Build(); // Configure the HTTP request pipeline. -if (app.Environment.IsDevelopment()) -{ +if (app.Environment.IsDevelopment()) { app.UseMigrationsEndPoint(); -} -else -{ +} else { app.UseExceptionHandler("/Error", createScopeForErrors: true); } @@ -56,4 +69,13 @@ // Add additional endpoints required by the Identity /Account Razor components. app.MapAdditionalIdentityEndpoints(); +string[] cultures = ["en-US", "en-GB", "de-DE"]; +app.UseRequestLocalization(new RequestLocalizationOptions { + ApplyCurrentCultureToResponseHeaders = true, + FallBackToParentCultures = true, FallBackToParentUICultures = true + } + .SetDefaultCulture(cultures[0]) + .AddSupportedCultures(cultures) + .AddSupportedUICultures(cultures)); + app.Run(); diff --git a/Wave/Resources/Components/Pages/Home.de-DE.resx b/Wave/Resources/Components/Pages/Home.de-DE.resx new file mode 100644 index 0000000..535c594 --- /dev/null +++ b/Wave/Resources/Components/Pages/Home.de-DE.resx @@ -0,0 +1,104 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 1.3 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.3500.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.3500.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + Hallo Welt! + + \ No newline at end of file diff --git a/Wave/Resources/Components/Pages/Home.en-GB.resx b/Wave/Resources/Components/Pages/Home.en-GB.resx new file mode 100644 index 0000000..4fdb1b6 --- /dev/null +++ b/Wave/Resources/Components/Pages/Home.en-GB.resx @@ -0,0 +1,101 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 1.3 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.3500.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.3500.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + \ No newline at end of file diff --git a/Wave/Resources/Components/Pages/Home.resx b/Wave/Resources/Components/Pages/Home.resx new file mode 100644 index 0000000..7011191 --- /dev/null +++ b/Wave/Resources/Components/Pages/Home.resx @@ -0,0 +1,104 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 1.3 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.3500.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.3500.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + Hello World! + + \ No newline at end of file