Skip to content
This repository was archived by the owner on May 16, 2026. It is now read-only.

Repository files navigation

Supporting language culture

Advanced language support for Blazor.

Nuget Package Abstraction

Install-Package Zonit.Extensions.Cultures.Abstractions 

NuGet Version NuGet

Nuget Package Extensions

Install-Package Zonit.Extensions.Cultures

NuGet Version NuGet

Install Add this in Routes.razor

@using Zonit.Extensions

<ZonitCulturesExtension />

Services in Program.cs

builder.Services.AddCulturesExtension();

App in Program.cs

app.UseCulturesExtension();

Example usage:

@page "/culture"
@using Zonit.Extensions.Cultures
@implements IDisposable
@inject ICultureProvider Culture

@Culture.Translate("Hello {0}", "user")

@code{
    protected override void OnInitialized()
    {
        Culture.OnChange += StateHasChanged;
    }

    public void Dispose()
    {
        Culture.OnChange -= StateHasChanged;
    }
}

API:

public interface ICultureProvider
{
    /// <summary>
    /// Returns the current culture in use in the BCP 47 standard
    /// </summary>
    public string GetCulture { get; }

    /// <summary>
    /// Returns the translation in the current language used
    /// </summary>
    /// <param name="content">Search string, example: “Hello {0}”</param>
    /// <param name="args">Additional arguments, example: “User”</param>
    /// <returns></returns>
    public string Translate(string content, params object?[] args);

    /// <summary>
    /// Default time zone for the user
    /// </summary>
    /// <param name="utcDateTime"></param>
    /// <returns></returns>
    public DateTime ClientTimeZone(DateTime utcDateTime);

    /// <summary>
    /// Event that is triggered when the language is changed
    /// </summary>
    public event Action? OnChange;

    /// <summary>
    /// Date and time format
    /// </summary>
    public DateTimeFormatModel DateTimeFormat { get; }
}
public interface ICultureManager
{
    /// <summary>
    /// Get the current culture in use in the BCP 47 standard
    /// </summary>
    public string GetCulture { get; }

    /// <summary>
    /// Get the current time zone in use in the IANA standard
    /// </summary>
    public string GetTimeZone { get; }

    /// <summary>
    /// Get list of supported cultures
    /// </summary>
    public LanguageModel[] SupportedCultures { get; }

    /// <summary>
    /// Changing the default language
    /// </summary>
    /// <param name="culture">Language parameter in BCP 47 standard</param>
    public void SetCulture(string culture);

    /// <summary>
    /// Changing the default time zone
    /// </summary>
    /// <param name="timeZone"></param>
    public void SetTimeZone(string timeZone);

    /// <summary>
    /// Event that is triggered when the language is changed
    /// </summary>
    public event Action? OnChange;
}
public interface ITranslationManager
{
    /// <summary>
    /// Add one translation
    /// </summary>
    /// <param name="item"></param>
    public void Add(Variable item);

    /// <summary>
    /// Add multiple translations
    /// </summary>
    /// <param name="items"></param>
    public void AddRange(List<Variable> items);
}

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Used by

Contributors

Languages