
Eine weitere Lokalisierungsbibliothek mit eigenen Abstraktionen bietet die Möglichkeit, Lokalisierungsinfrastruktur mit Beispielen zu schaffen. Es enthält eine grundlegende Implementierung von JSON -Lokalisierungsanbietern (andere Typen werden in Zukunft hinzugefügt).
Installieren Sie vor der Verwendung der Bibliothek die folgenden Nuget -Pakete:
| Name | Beschreibung | Version |
|---|---|---|
| Tekdeq.localization.core | Kernbibliothek | |
| Tekdeq.localization.dependencyInjection | Microsoft DI -Erweiterungen | |
| Tekdeq.localization.avalonia | Avalonia Lokalisierung und Erweiterungen |
Um zusätzliche Lokalisierungsanbieter zu erstellen, lesen Sie bitte ILocalizationProvider und Lokalisierungsproviderbase -Abstraktionen. Als Beispiel für den Gebrauch sehen Sie sich die Implementierung von JsonLocalizationProvider und AvaloniajsonLocalizationProvider an. Wenn Sie die Abhängigkeitsinjektion in Ihrem Projekt verwenden, finden Sie ein Beispiel für die Verwendung in app.axaml.cs des Demo -Projekts.
public override void OnFrameworkInitializationCompleted ( )
{
var host = Host . CreateDefaultBuilder ( )
. ConfigureServices ( ( context , services ) =>
{
services . UseMicrosoftDependencyResolver ( ) ;
// Initialize Splat
var resolver = Locator . CurrentMutable ;
resolver . InitializeSplat ( ) ;
resolver . InitializeReactiveUI ( ) ;
// Register Views and ViewModels
services . AddTransient < MainWindow > ( ) ;
services . AddTransient < MainWindowViewModel > ( ) ;
// Register Localization
services . AddLocalization < AvaloniaJsonLocalizationProvider > ( ( ) =>
{
var options = new AvaloniaLocalizationOptions (
// cultures support localization
new List < CultureInfo >
{
new ( "en-US" ) ,
new ( "uk-UA" )
} ,
// defaultCulture, it uses for setting if currentCulture is not in cultures list
// and as fallback culture mor missing localization entries.
new CultureInfo ( "en-US" ) ,
// currentCulture sets when infrastructure loads,
// could be received from app settings or so.
Thread . CurrentThread . CurrentCulture ,
// path to assets with json files of localization.
$ " { typeof ( App ) . Namespace } /Assets/i18n" ) ;
return options ;
} ) ;
} ) . Build ( ) ;
if ( ApplicationLifetime is IClassicDesktopStyleApplicationLifetime desktop )
{
desktop . MainWindow = new MainWindow
{
DataContext = host . Services . GetRequiredService < MainWindowViewModel > ( )
} ;
}
base . OnFrameworkInitializationCompleted ( ) ;
}Für die Verwendung der Markup -Lokalisierung in Avalonia durch Lokalisierung der Markup -Erweiterung muss der Namespace zum Markup hinzugefügt werden.
<Window xmlns="https://github.com/avaloniaui"
...
xmlns:i18n="clr-namespace:TekDeq.Localization.Avalonia.Extensions;assembly=TekDeq.Localization.Avalonia"
...
>
Danach könnte es zur Lokalisierung der UI verwendet werden
<StackPanel
...
<TextBlock Text="{i18n:Localize Greeting}" />
...
</StackPanel>
Das Demo -Projekt, das in das Repository enthält, öffnen Sie es einfach und führen Sie es in Visual Studio aus.
Dieses Projekt ist gemäß den Bedingungen der MIT -Lizenz lizenziert.
Beiträge sind willkommen. Eröffnen Sie einfach ein Problem oder reichen Sie eine neue PR ein.
Sie können mich per E -Mail erreichen.