
อีกห้องสมุดโลคัลไลเซชันที่มีนามธรรมของตัวเองให้ความเป็นไปได้ในการสร้างโครงสร้างพื้นฐานการแปลด้วยตัวอย่าง มันมีการใช้งานผู้ให้บริการการแปล JSON ขั้นพื้นฐาน (ประเภทอื่น ๆ จะถูกเพิ่มในอนาคต)
ก่อนใช้ไลบรารีให้ติดตั้งแพ็คเกจ NuGet ต่อไปนี้:
| ชื่อ | คำอธิบาย | รุ่น |
|---|---|---|
| tekdeq.localization.core | ห้องสมุดหลัก | |
| tekdeq.localization.dependencyinject | ส่วนขยายของ Microsoft Di | |
| tekdeq.localization.avalonia | Avalonia localization และ Extensions |
ในการสร้างผู้ให้บริการการแปลเพิ่มเติมโปรดดูที่ alocalizationProvider และ localizationProviderBase abstractions เป็นตัวอย่างของการใช้งานโปรดดูที่ JsonLocalizationProvider และ AvaloniajsonlocalizationProvider หากคุณใช้การฉีดพึ่งพาในโครงการของคุณตัวอย่างของการใช้งานสามารถพบได้ใน 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 โดยการขยายส่วนขยายมาร์กอัป localize มันต้องการเนมสเปซที่จะเพิ่มลงในมาร์กอัป
<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
ยินดีต้อนรับการมีส่วนร่วม เพียงเปิดปัญหาหรือส่ง PR ใหม่
คุณสามารถติดต่อฉันทางอีเมลของฉัน