
Encore une autre bibliothèque de localisation avec ses propres abstractions donne la possibilité de créer une infrastructure de localisation avec des exemples. Il contient l'implémentation de base du fournisseur de localisation JSON (d'autres types seront ajoutés à l'avenir).
Avant d'utiliser la bibliothèque, installez les packages NuGet suivants:
| Nom | Description | Version |
|---|---|---|
| Tekdeq.localisation.core | Bibliothèque de base | |
| Tekdeq.localisation.dependencyInjection | Microsoft di Extensions | |
| Tekdeq.localisation.avalonie | Localisation et extensions d'Avalonia |
Pour créer des fournisseurs de localisation supplémentaires, veuillez consulter les abstractions d'IlocalizationProvider et de localisationProviderBase. À titre d'exemple d'utilisation, veuillez consulter la mise en œuvre de JSONLocalizationProvider et AvaloniajsonLocalizationProvider. Si vous utilisez l'injection de dépendance dans votre projet, un exemple de l'utilisation pourrait être trouvé dans App.Axaml.cs du projet de démonstration.
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 ( ) ;
}Pour commencer à utiliser la localisation de balisage dans Avalonia en localisant l'extension de balisage, il a besoin de l'espace de noms à ajouter au balisage.
<Window xmlns="https://github.com/avaloniaui"
...
xmlns:i18n="clr-namespace:TekDeq.Localization.Avalonia.Extensions;assembly=TekDeq.Localization.Avalonia"
...
>
Après cela, il pourrait être utilisé pour la localisation de l'interface utilisateur
<StackPanel
...
<TextBlock Text="{i18n:Localize Greeting}" />
...
</StackPanel>
Le projet de démonstration inclus dans le référentiel, juste l'ouvrir et l'exécuter dans Visual Studio.
Ce projet est concédé sous licence de la licence du MIT.
Les contributions sont les bienvenues. Ouvrez simplement un problème ou soumettez un nouveau PR.
Vous pouvez me joindre via mon e-mail.