Megosztás a következőn keresztül:


A ASP.NET Core honosításának hibaelhárítása

Készítette: Hisham Bin Ateya

Ez a cikk útmutatást nyújt a ASP.NET Core alkalmazás honosítási problémáinak diagnosztizálásához.

Honosítási konfigurációs problémák

Honosítási köztes szoftver sorrendje
Előfordulhat, hogy az alkalmazás nem honosít, mert a honosítási köztes szoftver nem a várt módon van rendezve.

A probléma megoldásához győződjön meg arról, hogy a honosítási köztes szoftver regisztrálva van az MVC köztes szoftver előtt. Ellenkező esetben a honosítási köztes szoftver nincs alkalmazva.

public void ConfigureServices(IServiceCollection services)
{
    services.AddLocalization(options => options.ResourcesPath = "Resources");

    services.AddMvc();
}

A honosítási erőforrások elérési útja nem található

A RequestCultureProvider támogatott kultúrái nem egyeznek a regisztrált kultúrákkal

Erőforrásfájl elnevezésével kapcsolatos problémák

ASP.NET Core előre definiált szabályokat és irányelveket biztosít a honosítási erőforrások fájlelnevezéséhez, amelyeket a ASP.NET Core globalizációja és honosítása című cikk ismertet.

Hiányzó erőforrások

A nem található erőforrások gyakori okai a következők:

  • Az erőforrásnevek hibásan szerepelnek a .NET XML-erőforrásfájlban (.resx) vagy a localizer-kérelemben.
  • Az erőforrás bizonyos nyelvek esetében hiányzik az erőforrásfájlból, de létezik más nyelvekben is.
  • Ha továbbra is problémákat tapasztal, tekintse meg a honosítási naplóüzeneteket (a Debug log szinten naplózva) a hiányzó erőforrásokról.

Jótanács

Amikor a CookieRequestCultureProvider-t használja, ellenőrizze, hogy egysoros idézőjeleket nem használnak-e a honosítás cookie értékén belüli kultúrákhoz. Például c='en-UK'|uic='en-US' érvénytelen cookie érték, míg c=en-UK|uic=en-US érvényes.

Erőforrás- és osztálykönyvtárak problémái

ASP.NET Core alapértelmezés szerint lehetővé teszi osztálykönyvtárak számára, hogy megkeressék az erőforrásfájlokat.ResourceLocationAttribute

Az osztálykódtárakkal kapcsolatos gyakori problémák a következők:

CustomRequestCultureProvider nem a várt módon működik

Az RequestLocalizationOptions osztály három alapértelmezett szolgáltatóval rendelkezik:

A CustomRequestCultureProvider lehetővé teszi, hogy testreszabja, hogyan biztosítják a honosítási kultúrát. Ez CustomRequestCultureProvider akkor használatos, ha az alapértelmezett szolgáltatók nem felelnek meg a követelményeknek.

Az egyéni szolgáltatók nem megfelelő működésének gyakori oka, hogy nem ez az első szolgáltató a RequestCultureProviders listában. A probléma megoldása:

  • Szúrja be az egyéni szolgáltatót a nulla pozícióba a RequestCultureProviders listában:

    options.AddInitialRequestCultureProvider(
        new CustomRequestCultureProvider(async context =>
        {
            // My custom request culture logic
            return new ProviderCultureResult("en");
        }));
    
  • Szúrja be az egyéni szolgáltatót a nulla pozícióba a RequestCultureProviders listában:

    options.RequestCultureProviders.Insert(0, 
        new CustomRequestCultureProvider(async context =>
        {
            // My custom request culture logic
            return new ProviderCultureResult("en");
        }));
    

Gyökérnévtérrel kapcsolatos problémák

Amikor egy összeállítás gyökérnévtere eltér az összeállítás nevétől, a honosítás alapértelmezés szerint nem működik. A probléma elkerülése érdekében használja a RootNamespace leírt attribútumot.

Figyelmeztetés

Gyökérnévtér-probléma akkor fordulhat elő, ha egy projekt neve nem érvényes .NET-azonosító. Például a my-project-name.csproj a gyökérnévteret my_project_name és a szerelvény nevét my-project-name használja, ami ezt a hibát eredményezi.

Erőforrások és felépítési művelet

Ha erőforrásfájlokat használ a honosításhoz, fontos, hogy megfelelő összeállítási művelettel rendelkezzenek. Beágyazott erőforrás használata; ellenkező esetben a ResourceStringLocalizer nem találja ezeket az erőforrásokat.

Hely felülbírálása az "Érzékelők" panel használatával a fejlesztői eszközökben

Amikor a helymeghatározás felülírását használja a Érzékelők panelen a Google Chrome vagy a Microsoft Edge fejlesztői eszközeiben, az alapértelmezett nyelv az előrendezés után visszaáll. A tesztelés során ne állítsa be a nyelvet a Érzékelők panel használatával. Állítsa be a nyelvet a böngésző nyelvi beállításaival.

További információért lásd: Blazor A honosítás nem működik az InteractiveServer (dotnet/aspnetcore #53707).

A GitHub problémái hasznos problémamegoldási tippekkel