Configurarea limbilor disponibile în proiectul FOD
Introducere
Această documentație descrie modul în care se configurează limbile disponibile în proiect prin intermediul fișierului appsettings.json
. Această configurație permite adăugarea și gestionarea limbilor în care portalul este disponibil pentru utilizatori.
Configurarea în appsettings.json
Fișierul de configurare appsettings.json
conține o secțiune dedicată pentru gestionarea limbilor disponibile. Structura generală este următoarea:
"Fod": {
"Application": {
"Languages": [
{
"Iso2": "ro",
"Name": "Română"
},
{
"Iso2": "ru",
"Name": "Русский"
},
{
"Iso2": "en",
"Name": "English"
}
]
}
}
Explicație
Această configurație definește lista de limbi suportate de aplicație. Fiecare limbă este specificată printr-un obiect care conține următoarele proprietăți:
- Iso2: Codul ISO 639-1 al limbii. Acest cod este utilizat pentru a identifica limba în aplicație.
- Name: Numele afișat al limbii în interfața utilizatorului.
În exemplul de mai sus, aplicația suportă următoarele limbi:
- Română (
ro
) - Русский (
ru
) - English (
en
)
Utilizare în cod
Accesarea listei de limbi în C
Pentru a citi lista de limbi din appsettings.json
, se poate utiliza IConfiguration
în ASP.NET Core:
using Microsoft.Extensions.Configuration;
using System.Collections.Generic;
public class LanguageService
{
private readonly List<Language> _languages;
public LanguageService(IConfiguration configuration)
{
_languages = configuration.GetSection("Fod:Application:Languages").Get<List<Language>>();
}
public IEnumerable<Language> GetAvailableLanguages()
{
return _languages;
}
}
public class Language
{
public string Iso2 { get; set; }
public string Name { get; set; }
}
Integrarea cu interfața Blazor
Într-o aplicație Blazor, această listă de limbi poate fi utilizată pentru a permite utilizatorilor să selecteze limba preferată dintr-un meniu derulant:
@inject LanguageService LanguageService
<select @bind="selectedLanguage">
@foreach (var lang in LanguageService.GetAvailableLanguages())
{
<option value="@lang.Iso2">@lang.Name</option>
}
</select>
@code {
private string selectedLanguage = "ro";
}
Configurarea automată a culturii în aplicație
Atât aplicația client, cât și cea server, vor prelua automat configurația limbilor din appsettings.json
și vor configura cultura aplicației în funcție de limba selectată de utilizator. Acest proces asigură traducerea corectă a interfeței și utilizarea formatelor locale corespunzătoare (ex. dată, oră, monedă etc.).
Dacă utilizatorul nu a selectat o limbă, atunci implicit se va seta limba Română (ro
).
Configurarea culturii pe server
Pentru a implementa această funcționalitate, serverul poate seta cultura folosind middleware-ul de localizare în ASP.NET Core:
using Microsoft.AspNetCore.Localization;
using System.Globalization;
public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
{
var supportedCultures = new List<CultureInfo>
{
new CultureInfo("ro"),
new CultureInfo("ru"),
new CultureInfo("en")
};
var localizationOptions = new RequestLocalizationOptions
{
DefaultRequestCulture = new RequestCulture("ro"),
SupportedCultures = supportedCultures,
SupportedUICultures = supportedCultures
};
app.UseRequestLocalization(localizationOptions);
}
Configurarea culturii pe client Blazor
În aplicația client Blazor, cultura poate fi setată folosind CultureInfo
și JSInterop
pentru a sincroniza cultura cu navigatorul utilizatorului:
@inject IJSRuntime JSRuntime
@code {
protected override async Task OnInitializedAsync()
{
var culture = await JSRuntime.InvokeAsync<string>("navigator.language");
CultureInfo.DefaultThreadCurrentCulture = new CultureInfo(culture);
CultureInfo.DefaultThreadCurrentUICulture = new CultureInfo(culture);
}
}
Concluzie
Configurarea limbilor disponibile prin appsettings.json
oferă o metodă flexibilă de gestionare a limbilor în aplicație. Atât clientul, cât și serverul vor prelua automat configurația și vor seta cultura aplicației în funcție de limba selectată, asigurând o experiență coerentă pentru utilizatori. În cazul în care utilizatorul nu a selectat o limbă, aplicația va utiliza implicit limba Română (ro
).