
تمنح مكتبة توطين أخرى مع تجريداتها إمكانية إنشاء بنية تحتية للتوطين مع أمثلة. أنه يحتوي على تنفيذ موفر توطين JSON الأساسي (سيتم إضافة أنواع أخرى في المستقبل).
قبل استخدام المكتبة ، قم بتثبيت حزم nuget التالية:
| اسم | وصف | إصدار |
|---|---|---|
| tekdeq.localization.core | المكتبة الأساسية | |
| tekdeq.localization.dependencyInjection | امتدادات Microsoft DI | |
| tekdeq.localization.avalonia | توطين وملحقات أفالونيا |
لإنشاء مقدمي توطين إضافيين ، يرجى إلقاء نظرة على تجريدات IlocalizationProvider و TonginizationProviderBase. كمثال على الاستخدام ، يرجى إلقاء نظرة على تنفيذ 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 ( ) ;
}لبدء استخدام توطين الترميز في أفالونيا من خلال توطين تمديد الترميز ، فإنه يحتاج إلى إضافة مساحة الاسم إلى العلامات.
<Window xmlns="https://github.com/avaloniaui"
...
xmlns:i18n="clr-namespace:TekDeq.Localization.Avalonia.Extensions;assembly=TekDeq.Localization.Avalonia"
...
>
بعد ذلك يمكن استخدامه لتوطين واجهة المستخدم
<StackPanel
...
<TextBlock Text="{i18n:Localize Greeting}" />
...
</StackPanel>
تم تضمين المشروع التجريبي في المستودع ، فقط افتحه وتشغيله في Visual Studio.
هذا المشروع مرخص بموجب شروط ترخيص معهد ماساتشوستس للتكنولوجيا.
المساهمات موضع ترحيب. فقط افتح مشكلة أو إرسال علاقات عامة جديدة.
يمكنك الوصول إلي عبر بريدي الإلكتروني.