Shaunebu.MAUI.LocalizationManager
1.0.0
dotnet add package Shaunebu.MAUI.LocalizationManager --version 1.0.0
NuGet\Install-Package Shaunebu.MAUI.LocalizationManager -Version 1.0.0
<PackageReference Include="Shaunebu.MAUI.LocalizationManager" Version="1.0.0" />
<PackageVersion Include="Shaunebu.MAUI.LocalizationManager" Version="1.0.0" />
<PackageReference Include="Shaunebu.MAUI.LocalizationManager" />
paket add Shaunebu.MAUI.LocalizationManager --version 1.0.0
#r "nuget: Shaunebu.MAUI.LocalizationManager, 1.0.0"
#:package Shaunebu.MAUI.LocalizationManager@1.0.0
#addin nuget:?package=Shaunebu.MAUI.LocalizationManager&version=1.0.0
#tool nuget:?package=Shaunebu.MAUI.LocalizationManager&version=1.0.0
Shaunebu.MAUI.LocalizationManager ποΈβ¨
Shaunebu.MAUI.LocalizationManager provides a powerful and flexible way to manage localization in your .NET MAUI applications.
It is an enhanced version of the Xamarin Community Toolkitβs LocalizationResourceManager, adapted and improved for .NET MAUI.
π Installation
Install via NuGet:
PM> Install-Package Shaunebu.MAUI.LocalizationManager
NuGet Link: Shaunebu.MAUI.LocalizationManager Compatible with .NET MAUI 8+ projects.
β Setup
Configure localization with the builder extension:
var builder = MauiApp.CreateBuilder();
builder
.UseMauiApp<App>()
.UseLocalizationResourceManager(settings =>
{
settings.AddResource(AppResources.ResourceManager);
settings.RestoreLatestCulture(true);
});
Available settings methods
| Method | Description |
|---|---|
AddResource |
Add one or more ResourceManager instances |
AddFileResource |
Add file-based resource managers (supports runtime read/write with ResourceWriter / ResourceReader) |
InitialCulture |
Set the startup culture (default: system culture) |
RestoreLatestCulture |
Restore latest used culture on app start |
SupportNameWithDots |
Enable resource keys containing dots (configurable substitution) |
SuppressTextNotFoundException |
Suppress errors when resource not found, with optional placeholder text |
π§© Features
β Multiple Resource Managers
β File-based resource manager support
β Stores and restores latest culture
β DI-ready
ILocalizationResourceManagerinterfaceβ Supports
TranslateExtension(XAML) &LocalizedString(Code)β Culture-aware bindings (
TranslateBindingExtension) with plural & format supportβ Resource name dot support
β Placeholder text for missing resources
π€ Use in XAML
Add namespace reference:
xmlns:localization="clr-namespace:Shaunebu.MAUI.LocalizationManager;assembly=Shaunebu.MAUI.LocalizationManager"
Use Translate for localized text:
<Label
Text="{localization:Translate WelcomeToMAUI}"
FontSize="18"
HorizontalOptions="Center"/>
π Custom Bindings with TranslateBindingExtension
Pluralization
<Button Text="{localization:TranslateBinding Count, TranslateFormat=ClickedManyTimes, TranslateOne=ClickedOneTime, TranslateZero=ClickMe}" />
Date / Time
<Label Text="{localization:TranslateBinding CurrentDateTime, TranslateFormat=DateIs}"/>
<Label Text="{localization:TranslateBinding CurrentDateTime, TranslateFormat=TimeIs}"/>
Currency
<Label Text="{localization:TranslateBinding Price, TranslateFormat=TotalPrice}" />
Collections
<CollectionView ItemsSource="{Binding Fruits}">
<CollectionView.ItemTemplate>
<DataTemplate>
<Label Text="{localization:TranslateBinding ., TranslateValue=True}"/>
</DataTemplate>
</CollectionView.ItemTemplate>
</CollectionView>
Booleans
<Label Text="{localization:TranslateBinding OrderSent, TranslateTrue=Yes, TranslateFalse=No}" />
π₯οΈ Use in Code
Localized Strings
public LocalizedString HelloWorld { get; } =
new(() => $"{AppResources.Hello}, {AppResources.World}!");
With Dependency Injection
public MainPage(ILocalizationResourceManager resourceManager)
{
HelloWorld = new(() => $"{resourceManager["Hello"]}, {resourceManager["World"]}!");
}
Bind in XAML:
<Label Text="{Binding HelloWorld.Localized}" FontSize="32"/>
Change Culture at Runtime
resourceManager.CurrentCulture = new CultureInfo("en");
π Culture Management
| Property / Method | Description |
|---|---|
CurrentCulture |
Get/Set current culture (applies immediately) |
DefaultCulture |
Get system culture |
GetValue / [] |
Retrieve localized text manually |
ReleaseAllResources() |
Release resources (file-based scenarios) |
π Example Flow
public partial class MainPage : ContentPage
{
private readonly ILocalizationResourceManager resourceManager;
public MainPage(ILocalizationResourceManager resourceManager)
{
InitializeComponent();
this.resourceManager = resourceManager;
}
void SwitchLanguage()
{
resourceManager.CurrentCulture = new CultureInfo("fr");
}
}
π Comparison & Advantages
| Feature | Shaunebu.MAUI.LocalizationManager | Xamarin Community Toolkit | MAUI Toolkit |
|---|---|---|---|
| Multiple Resource Managers | β | β | β |
| File-based resources | β | β | β |
| Restore latest culture | β | β | β |
ILocalizationResourceManager for DI |
β | β | β |
| Plural / Format binding | β | β | β |
| WeakEventManager support | β | β | β |
Key Advantages:
Works seamlessly in .NET MAUI projects.
More powerful than the original XCT version.
DI-ready for ViewModels and services.
Format, pluralization, collections, booleans supported in XAML.
| Product | Versions Compatible and additional computed target framework versions. |
|---|---|
| .NET | net9.0-android35.0 is compatible. net9.0-ios18.0 is compatible. net9.0-maccatalyst18.0 is compatible. net9.0-windows10.0.19041 is compatible. net10.0-android was computed. net10.0-ios was computed. net10.0-maccatalyst was computed. net10.0-windows was computed. |
-
net9.0-android35.0
- Microsoft.Maui.Controls (>= 9.0.82)
-
net9.0-ios18.0
- Microsoft.Maui.Controls (>= 9.0.82)
-
net9.0-maccatalyst18.0
- Microsoft.Maui.Controls (>= 9.0.82)
-
net9.0-windows10.0.19041
- Microsoft.Maui.Controls (>= 9.0.82)
NuGet packages
This package is not used by any NuGet packages.
GitHub repositories
This package is not used by any popular GitHub repositories.
| Version | Downloads | Last Updated |
|---|---|---|
| 1.0.0 | 157 | 10/3/2025 |