
Namun perpustakaan lokalisasi lain dengan abstraksi sendiri memberikan kemungkinan untuk membuat infrastruktur lokalisasi dengan contoh. Ini berisi implementasi penyedia lokalisasi JSON dasar (tipe lain akan ditambahkan di masa depan).
Sebelum menggunakan pustaka, instal paket Nuget berikut:
| Nama | Keterangan | Versi |
|---|---|---|
| Tekdeq.localization.core | Perpustakaan Inti | |
| Tekdeq.localization.dependencyInjection | Ekstensi Microsoft Di | |
| Tekdeq.localization.avalonia | Lokalisasi dan ekstensi Avalonia |
Untuk membuat penyedia lokalisasi tambahan, silakan lihat abstraksi IlocalizationProvider dan LocalizationProviderbase. Sebagai contoh penggunaan, silakan lihat Implementasi JsonLocalizationProvider dan AvaloniajsonLocalizationProvider. Jika Anda menggunakan injeksi ketergantungan dalam proyek Anda, contoh penggunaan dapat ditemukan di app.axaml.cs dari proyek demo.
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 ( ) ;
}Untuk mulai menggunakan lokalisasi markup di Avalonia dengan melokalisasi ekstensi markup, diperlukan namespace untuk ditambahkan ke markup.
<Window xmlns="https://github.com/avaloniaui"
...
xmlns:i18n="clr-namespace:TekDeq.Localization.Avalonia.Extensions;assembly=TekDeq.Localization.Avalonia"
...
>
Setelah ini dapat digunakan untuk lokalisasi UI
<StackPanel
...
<TextBlock Text="{i18n:Localize Greeting}" />
...
</StackPanel>
Proyek demo yang disertakan ke repositori, cukup buka dan jalankan di Visual Studio.
Proyek ini dilisensikan berdasarkan ketentuan lisensi MIT.
Kontribusi dipersilakan. Cukup buka masalah atau kirimkan PR baru.
Anda dapat menghubungi saya melalui email saya.