Not
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
Anmärkning
Det här är inte den senaste versionen av den här artikeln. Den aktuella versionen finns i .NET 10-versionen av den här artikeln.
Varning
Den här versionen av ASP.NET Core stöds inte längre. Mer information finns i supportpolicyn för .NET och .NET Core. För den nuvarande utgåvan, se .NET 9-versionen av den här artikeln .
Den här artikeln:
- Visar utökningspunkterna för lokaliserings-API:erna.
- Innehåller instruktioner om hur du utökar ASP.NET Core-applokalisering.
Utökningsbara punkter i lokaliserings-API:er
ASP.NET CORE-lokaliserings-API:er har skapats för att vara utökningsbara. Med utökningsbarhet kan utvecklare anpassa lokaliseringen efter deras behov. Till exempel har OrchardCore en POStringLocalizer.
POStringLocalizer beskriver i detalj hur du använder lokalisering av portabla objekt för att använda PO filer för att lagra lokaliseringsresurser.
I den här artikeln visas de två huvudsakliga utökningspunkterna som lokaliserings-API:er tillhandahåller:
Leverantörer av lokaliseringskultur
ASP.NET Core-lokaliserings-API:er har fyra standardleverantörer som kan fastställa kulturinställningen för en begäran som exekveras:
- QueryStringRequestCultureProvider
- CookieRequestCultureProvider
- AcceptLanguageHeaderRequestCultureProvider
- CustomRequestCultureProvider
De föregående leverantörerna beskrivs i detalj i dokumentationen om mellanprogram för lokalisering . Om standardprovidrar inte uppfyller dina behov skapar du en anpassad provider med någon av följande metoder:
Använd CustomRequestCultureProvider
CustomRequestCultureProvider tillhandahåller en anpassad RequestCultureProvider som använder en enkel delegering för att fastställa den aktuella lokaliseringskulturen:
options.AddInitialRequestCultureProvider(new CustomRequestCultureProvider(async context =>
{
var currentCulture = "en";
var segments = context.Request.Path.Value.Split(new char[] { '/' },
StringSplitOptions.RemoveEmptyEntries);
if (segments.Length > 1 && segments[0].Length == 2)
{
currentCulture = segments[0];
}
var requestCulture = new ProviderCultureResult(currentCulture);
return Task.FromResult(requestCulture);
}));
options.RequestCultureProviders.Insert(0, new CustomRequestCultureProvider(async context =>
{
var currentCulture = "en";
var segments = context.Request.Path.Value.Split(new char[] { '/' },
StringSplitOptions.RemoveEmptyEntries);
if (segments.Length > 1 && segments[0].Length == 2)
{
currentCulture = segments[0];
}
var requestCulture = new ProviderCultureResult(currentCulture);
return Task.FromResult(requestCulture);
}));
Använda en ny implementering av RequestCultureProvider
En ny implementering av RequestCultureProvider kan skapas som fastställer kulturinformationen för en begäran från en anpassad källa. Den anpassade källan kan till exempel vara en konfigurationsfil eller databas.
I följande exempel visas AppSettingsRequestCultureProvider, som utökar RequestCultureProvider för att fastställa begärans kulturinformation från appsettings.json.
public class AppSettingsRequestCultureProvider : RequestCultureProvider
{
public string CultureKey { get; set; } = "culture";
public string UICultureKey { get; set; } = "ui-culture";
public override Task<ProviderCultureResult> DetermineProviderCultureResult(HttpContext httpContext)
{
if (httpContext == null)
{
throw new ArgumentNullException();
}
var configuration = httpContext.RequestServices.GetService<IConfigurationRoot>();
var culture = configuration[CultureKey];
var uiCulture = configuration[UICultureKey];
if (culture == null && uiCulture == null)
{
return Task.FromResult((ProviderCultureResult)null);
}
if (culture != null && uiCulture == null)
{
uiCulture = culture;
}
if (culture == null && uiCulture != null)
{
culture = uiCulture;
}
var providerResultCulture = new ProviderCultureResult(culture, uiCulture);
return Task.FromResult(providerResultCulture);
}
}
Lokaliseringsresurser
ASP.NET Core-lokalisering tillhandahåller ResourceManagerStringLocalizer.
ResourceManagerStringLocalizer är en implementering av IStringLocalizer som används resx för att lagra lokaliseringsresurser.
Du är inte begränsad till att använda resx filer. Genom att implementera IStringLocalizerkan alla datakällor användas.
Följande exempelprojekt implementerar IStringLocalizer:
ASP.NET Core