I18N.Avalonia.Prism
1.0.0
.NET 6.0
This package targets .NET 6.0. The package is compatible with this framework or higher.
.NET Core 3.1
This package targets .NET Core 3.1. The package is compatible with this framework or higher.
There is a newer version of this package available.
See the version list below for details.
See the version list below for details.
dotnet add package I18N.Avalonia.Prism --version 1.0.0
NuGet\Install-Package I18N.Avalonia.Prism -Version 1.0.0
This command is intended to be used within the Package Manager Console in Visual Studio, as it uses the NuGet module's version of Install-Package.
<PackageReference Include="I18N.Avalonia.Prism" Version="1.0.0" />
For projects that support PackageReference, copy this XML node into the project file to reference the package.
paket add I18N.Avalonia.Prism --version 1.0.0
The NuGet Team does not provide support for this client. Please contact its maintainers for support.
#r "nuget: I18N.Avalonia.Prism, 1.0.0"
#r directive can be used in F# Interactive and Polyglot Notebooks. Copy this into the interactive tool or source code of the script to reference the package.
// Install I18N.Avalonia.Prism as a Cake Addin #addin nuget:?package=I18N.Avalonia.Prism&version=1.0.0 // Install I18N.Avalonia.Prism as a Cake Tool #tool nuget:?package=I18N.Avalonia.Prism&version=1.0.0
The NuGet Team does not provide support for this client. Please contact its maintainers for support.
Avalonia Internationalizing
License | |
Builds | |
.NET Core | |
Avalonia | |
Nuget Prism | ToDo |
Nuget Reactive | ToDo |
Prism | ReactiveUi |
---|---|
<img src="./assets/Prism.gif" width="300" /> | <img src="./assets/ReactiveUi.gif" width="300" /> |
How to use it
Ressource manager files (.resx)
- Recommended tool to manage resx files is ResXResourceManager
Prism registration
protected override void RegisterTypes(IContainerRegistry containerRegistry)
{
containerRegistry.RegisterInstance<ILocalizer>(new Localizer(Properties.Resource.ResourceManager));
}
Include prism internationalizing module by .axaml
xmlns:i18N="clr-namespace:I18N.Avalonia.Prism;assembly=I18N.Avalonia.Prism"
ReactiveUi registration (Splat)
public override void RegisterServices()
{
base.RegisterServices();
Locator.CurrentMutable.RegisterLazySingleton(() => new Localizer(Properties.Resource.ResourceManager), typeof(ILocalizer));
}
Include reactive internatinalizing module by .axaml
xmlns:i18N="clr-namespace:I18N.Avalonia.ReactiveUi;assembly=I18N.Avalonia.ReactiveUi"
Usage in .axaml
<StackPanel>
<TextBlock Text="{i18N:PrismLocalizationExtension Welcome}"
HorizontalAlignment="Center"
VerticalAlignment="Center"
Margin="0, 24, 0,24"
FontSize="17"
FontWeight="Heavy" />
<Button Content="{i18N:PrismLocalizationExtension English}"
Margin="0,0,0,8"
Command="{Binding SwitchLanguage}"
CommandParameter="en"/>
<Button Content="{i18N:PrismLocalizationExtension German}"
Margin="0,0,0,8"
Command="{Binding SwitchLanguage}"
CommandParameter="de"/>
</StackPanel>
Usage in model view
public LanguageViewModel(ILocalizer i18N)
{
i18N.LanguageChangedNotification += OnLanguageChangedNotification;
}
private void OnLanguageChangedNotification()
{
Console.WriteLine(@"Change language to" + _localizer.Language.TwoLetterISOLanguageName);
// Your binding can be changed here or notify property changed can be called to refresh
}
Language change
- After language is set all binding properties will be automatic refreshed and LanguageChangedNotification is called to refresh bindings.
public LanguageViewModel(ILocalizer i18N)
{
i18N.Language = new CultureInfo("de");
}
Acknowledgment
Thanks to Sakya which has written this nice blog to understand this behavior and to build a nuget package with some changes.
Product | Versions Compatible and additional computed target framework versions. |
---|---|
.NET | net5.0 was computed. net5.0-windows was computed. net6.0 is compatible. net6.0-android was computed. net6.0-ios was computed. net6.0-maccatalyst was computed. net6.0-macos was computed. net6.0-tvos was computed. net6.0-windows was computed. net7.0 is compatible. net7.0-android was computed. net7.0-ios was computed. net7.0-maccatalyst was computed. net7.0-macos was computed. net7.0-tvos was computed. net7.0-windows was computed. net8.0 was computed. 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. |
.NET Core | netcoreapp3.1 is compatible. |
Compatible target framework(s)
Included target framework(s) (in package)
Learn more about Target Frameworks and .NET Standard.
-
.NETCoreApp 3.1
- I18N.Avalonia (>= 1.0.0)
- Prism.DryIoc.Avalonia (>= 8.1.97)
-
net6.0
- I18N.Avalonia (>= 1.0.0)
- Prism.DryIoc.Avalonia (>= 8.1.97)
-
net7.0
- I18N.Avalonia (>= 1.0.0)
- Prism.DryIoc.Avalonia (>= 8.1.97)
NuGet packages
This package is not used by any NuGet packages.
GitHub repositories
This package is not used by any popular GitHub repositories.