
Otra biblioteca de localización con sus propias abstracciones da la posibilidad de crear infraestructura de localización con ejemplos. Contiene la implementación básica del proveedor de localización JSON (se agregarán otros tipos en el futuro).
Antes de usar la biblioteca, instale los siguientes paquetes Nuget:
| Nombre | Descripción | Versión |
|---|---|---|
| Tekdeq.localización.core | Biblioteca | |
| Tekdeq.localización.dependencyInyection | Microsoft DI Extensiones | |
| Tekdeq.localización.avalonia | Localización y extensiones de Avalonia |
Para crear proveedores de localización adicionales, mire las abstracciones de IlocalizationProvider y LocalizationProviderBase. Como ejemplo de uso, mire JSONLocalizationProvider y la implementación de AvaloniaJsonLocalizationProvider. Si está utilizando la inyección de dependencia en su proyecto, se podría encontrar un ejemplo del uso en App.axaml.cs del proyecto de demostración.
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 ( ) ;
}Para comenzar a usar la localización de marcado en Avalonia al localizar la extensión de marcado, necesita que se agregue el espacio de nombres al marcado.
<Window xmlns="https://github.com/avaloniaui"
...
xmlns:i18n="clr-namespace:TekDeq.Localization.Avalonia.Extensions;assembly=TekDeq.Localization.Avalonia"
...
>
Después de esto, podría usarse para la localización de la interfaz de usuario
<StackPanel
...
<TextBlock Text="{i18n:Localize Greeting}" />
...
</StackPanel>
El proyecto de demostración incluido en el repositorio, simplemente abra y ejecute en Visual Studio.
Este proyecto tiene licencia bajo los términos de la licencia MIT.
Las contribuciones son bienvenidas. Simplemente abra un problema o envíe un nuevo PR.
Puedes comunicarse conmigo a través de mi correo electrónico.