Persilsoft.Localizer.Blazor
1.0.18
dotnet add package Persilsoft.Localizer.Blazor --version 1.0.18
NuGet\Install-Package Persilsoft.Localizer.Blazor -Version 1.0.18
<PackageReference Include="Persilsoft.Localizer.Blazor" Version="1.0.18" />
paket add Persilsoft.Localizer.Blazor --version 1.0.18
#r "nuget: Persilsoft.Localizer.Blazor, 1.0.18"
// Install Persilsoft.Localizer.Blazor as a Cake Addin #addin nuget:?package=Persilsoft.Localizer.Blazor&version=1.0.18 // Install Persilsoft.Localizer.Blazor as a Cake Tool #tool nuget:?package=Persilsoft.Localizer.Blazor&version=1.0.18
Persilsoft.Localizer.Blazor
A simple localization tool for Blazor apps
You can configure the culture in your Blazor application as follows, without needing to use this package.
var host = builder.Build();
culture = CultureInfo.CreateSpecificCulture("es-PE");
CultureInfo.DefaultThreadCurrentCulture = culture;
CultureInfo.DefaultThreadCurrentUICulture = culture;
await host.RunAsync();
However, the package offers you certain additional tools and configurations.
For example, it provides a language selector that you could place in the MainLayout component.
@inherits LayoutComponentBase
@using Persilsoft.Localizer.Blazor.Components
<div class="page">
<div class="sidebar">
<NavMenu />
</div>
<main>
<div class="top-row px-4">
<CultureSelector SupportedCultures="supportedCultures" />
<a href="https://learn.microsoft.com/aspnet/core/" target="_blank">@Messages.About</a>
</div>
<article class="content px-4">
@Body
</article>
</main>
</div>
@code {
private string[] supportedCultures;
protected override async Task OnInitializedAsync()
{
supportedCultures = new string[] { "es-PE", "en-US" };
await Task.CompletedTask;
}
}
Each time the user makes a change in the selector, the selected culture will be stored in the localStorage with the key culture.
Http Handler
If your Blazor application consumes a WebApi that applies localization settings based on the 'Accept-Language' header of HTTP requests, then you could use an HTTP client configurator provided by this package to intercept requests and add this header, taking the culture from the culture key in localStorage. With this, you'll ensure that your Blazor application integrates language configuration in both the Backend and the Frontend.
Let's assume we have the following Gateway to communicate with the WebApi:
public class ApiGateway(HttpClient client)
{
public async Task<string> GetWelcomeMessage() =>
await client.GetStringAsync("/localizer/message");
}
We can create an extension method to register our Gateway and configure the Http client to use the request handler.
using Persilsoft.Localizer.Blazor.HttpHandler;
using ServiceCollectionExtensions;
public static class DependencyContainer
{
public static IServiceCollection AddGateway(this IServiceCollection services,
Action<HttpClient> httpClientConfigurator)
{
Builder.AddLocalizationDelegatingHandler();
services.AddHttpClient<ApiGateway>(httpClientConfigurator)
.AddHttpMessageHandler<LocalizationDelegatingHandler>();
return services;
}
}
Now, we simply register it in the dependency container.
Action<HttpClient> httpClientConfigurator = client =>
{
client.BaseAddress = new Uri("https://localhost:7025");
};
builder.Services.AddGateway(httpClientConfigurator);
Gateway demo
Here is an example using the Gateway:
@page "/"
<PageTitle>Localization in Blazor</PageTitle>
<h1>Blazor Demo</h1>
<button class="btn btn-primary" @onclick=Welcome_Click>Welcome</button>
<hr />
@Welcome
@code {
private string Welcome;
[Inject]
private ApiGateway Gateway { get; set; }
private async Task Welcome_Click()
{
Welcome = await Gateway.GetWelcomeMessage();
}
}
Keep in mind that you can also localize the text of your Blazor pages and components using the Persilsoft.Localizer package.
Product | Versions Compatible and additional computed target framework versions. |
---|---|
.NET | net8.0 is compatible. net8.0-android was computed. net8.0-browser was computed. net8.0-ios was computed. net8.0-maccatalyst was computed. net8.0-macos was computed. net8.0-tvos was computed. net8.0-windows was computed. |
-
net8.0
- Microsoft.AspNetCore.Components.Web (= 8.0.10)
- Persilsoft.HttpDelegatingHandlers (= 1.0.17)
NuGet packages (1)
Showing the top 1 NuGet packages that depend on Persilsoft.Localizer.Blazor:
Package | Downloads |
---|---|
Persilsoft.Membership.Blazor
Contains razor clases for use in frontend membership projects |
GitHub repositories
This package is not used by any popular GitHub repositories.
Version | Downloads | Last updated |
---|---|---|
1.0.18 | 183 | 10/16/2024 |
1.0.17 | 109 | 10/16/2024 |
1.0.16 | 79 | 10/15/2024 |
1.0.15 | 99 | 10/13/2024 |
1.0.14 | 213 | 8/28/2024 |
1.0.13 | 146 | 8/17/2024 |
1.0.12 | 84 | 7/29/2024 |
1.0.11 | 80 | 7/29/2024 |
1.0.10 | 249 | 7/20/2024 |
1.0.9 | 366 | 5/25/2024 |
1.0.8 | 110 | 5/25/2024 |
1.0.7 | 141 | 5/22/2024 |
1.0.6 | 262 | 5/18/2024 |
1.0.5 | 123 | 5/18/2024 |
1.0.4 | 177 | 5/17/2024 |
1.0.3 | 125 | 5/1/2024 |
1.0.0 | 122 | 4/13/2024 |