TekDeq.Localization
1.0.0

另一個具有其自身抽象的本地化庫為創建示例創建本地化基礎架構的可能性。它包含基本的JSON本地化提供商實現(將來還會添加其他類型)。
在使用庫之前,請按以下安裝Nuget軟件包:
| 姓名 | 描述 | 版本 |
|---|---|---|
| tekdeq.localization.core | 核心庫 | |
| tekdeq.localization | Microsoft di擴展 | |
| tekdeq.localization.avalonia | 阿雪茄本地化和擴展 |
要創建其他本地化提供商,請查看Ilocalization -provider和WertizationProviderBase摘要。作為用法的一個示例,請查看JSONLOCALIZARIZARIZAL -PROVIDER和AVALONIAJSONLOCALIZIAZERPROVIDER實現。如果您在項目中使用依賴項注入,則可以在演示項目的App.axaml.cs中找到使用的示例。
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 ( ) ;
}為了通過本地化標記擴展開始使用Avalonia中的標記本地化,它需要將名稱空間添加到標記中。
<Window xmlns="https://github.com/avaloniaui"
...
xmlns:i18n="clr-namespace:TekDeq.Localization.Avalonia.Extensions;assembly=TekDeq.Localization.Avalonia"
...
>
之後,它可以用於UI的本地化
<StackPanel
...
<TextBlock Text="{i18n:Localize Greeting}" />
...
</StackPanel>
存儲庫中包含的演示項目,只需在Visual Studio中打開並運行它即可。
該項目是根據MIT許可證的條款獲得許可的。
歡迎捐款。只需打開問題或提交新的公關即可。
您可以通過我的電子郵件與我聯繫。