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.
Den här artikeln innehåller instruktioner om hur du diagnostiserar ASP.NET Core-applokaliseringsproblem.
Problem med lokaliseringskonfiguration
Mellanprogramsordning för lokalisering
Appen kanske inte lokaliserar eftersom mellanprogrammet för lokalisering inte är ordnat som förväntat.
Lös problemet genom att se till att mellanprogram för lokalisering registreras före MVC-mellanprogram. Annars tillämpas inte mellanprogrammet för lokalisering.
public void ConfigureServices(IServiceCollection services)
{
services.AddLocalization(options => options.ResourcesPath = "Resources");
services.AddMvc();
}
Sökvägen för lokaliseringsresurser hittades inte
Kulturer som stöds i RequestCultureProvider matchar inte med registrerade en gång
Problem med namngivning av resursfiler
ASP.NET Core har fördefinierade regler och riktlinjer för namngivning av lokaliseringsresurser, som beskrivs i Globalisering och lokalisering i ASP.NET Core.
Resurser som saknas
Vanliga orsaker till att resurser inte hittas är:
- Resursnamnen är felstavade i .NET XML-resursfilen (
.resx) eller i lokaliseringsbegäran. - Resursen saknas i resursfilen för vissa språk, men finns i andra.
- Om du fortfarande har problem kontrollerar du lokaliseringsloggmeddelandena (loggas på
Debugloggnivå) för mer information om de resurser som saknas.
Tips/Råd
När du använder CookieRequestCultureProvider, kontrollera att enkelcitattecken inte används mellan kulturerna i lokaliseringsvärdet cookie. Till exempel c='en-UK'|uic='en-US' är ett ogiltigt cookie värde, medan c=en-UK|uic=en-US det är giltigt.
Problem med resurser och klassbibliotek
ASP.NET Core ger som standard ett sätt att låta klassbiblioteken hitta sina resursfiler via ResourceLocationAttribute.
Vanliga problem med klassbibliotek är:
- Att sakna ResourceLocationAttribute i ett klassbibliotek hindrar ResourceManagerStringLocalizerFactory från att identifiera resurserna.
- Namn på resursfil. Mer information finns i avsnittet Problem med namngivning av resursfiler .
- Ändra rotnamnområdet för klassbiblioteket. Mer information finns i avsnittet Problem med rotnamnområde .
CustomRequestCultureProvider fungerar inte som förväntat
Klassen RequestLocalizationOptions har tre standardprovidrar:
- QueryStringRequestCultureProvider
- CookieRequestCultureProvider
- AcceptLanguageHeaderRequestCultureProvider
Med CustomRequestCultureProvider kan du anpassa hur lokaliseringskulturen tillhandahålls. CustomRequestCultureProvider Används när standardprovidrar inte uppfyller dina krav.
En vanlig orsak till att en anpassad leverantör inte fungerar korrekt är att den inte är den första leverantören i RequestCultureProviders listan. Så här löser du problemet:
Infoga den anpassade providern på position noll i RequestCultureProviders listan:
options.AddInitialRequestCultureProvider( new CustomRequestCultureProvider(async context => { // My custom request culture logic return new ProviderCultureResult("en"); }));
Infoga den anpassade providern på position noll i RequestCultureProviders listan:
options.RequestCultureProviders.Insert(0, new CustomRequestCultureProvider(async context => { // My custom request culture logic return new ProviderCultureResult("en"); }));
- AddInitialRequestCultureProvider Använd tilläggsmetoden för att ange den anpassade providern som den första providern.
Problem med rotnamnområde
När rotnamnområdet för en sammansättning skiljer sig från sammansättningsnamnet fungerar inte lokaliseringen som standard. Undvik det här problemet genom att RootNamespace använda attributet som beskrivs i Globalisering och lokalisering i ASP.NET Core.
Varning
Ett rotnamnområdesproblem kan uppstå när ett projekts namn inte är en giltig .NET-identifierare. Till exempel my-project-name.csproj använder rotnamnområdet my_project_name och sammansättningsnamnet my-project-name, vilket resulterar i det här felet.
Resurser och byggåtgärd
Om du använder resursfiler för lokalisering är det viktigt att de har en lämplig byggåtgärd. Använd inbäddad resurs; annars ResourceStringLocalizer kan inte hitta dessa resurser.
Åsidosättning av plats med hjälp av panelen "Sensorer" i utvecklarverktyg
När du använder platsåterställningen med hjälp av fönstret Sensorer i Google Chrome eller Microsoft Edge-utvecklarverktyg återställs återställningsspråket efter föråtergivningen. Undvik att ange språket med hjälp av fönstret Sensorer när du testar. Ange språket med webbläsarens språkinställningar.
För mer information, se Blazor Lokalisering fungerar inte med InteractiveServer (dotnet/aspnetcore #53707).
GitHub-problem med användbara problemlösningstips
ASP.NET Core