Megjegyzés
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhat bejelentkezni vagy módosítani a címtárat.
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhatja módosítani a címtárat.
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
Debuglog 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:
- Ha hiányzik a(z) ResourceLocationAttribute egy osztálykönyvtárban, az megakadályozza a ResourceManagerStringLocalizerFactory számára az erőforrások felderítését.
- Erőforrásfájl elnevezése. További információkért tekintse meg az Erőforrásfájl elnevezésével kapcsolatos problémák szakaszt .
- Az osztálytár gyökérnévterének módosítása. További információkért tekintse meg a Gyökérnévtér problémái című szakaszt .
CustomRequestCultureProvider nem a várt módon működik
Az RequestLocalizationOptions osztály három alapértelmezett szolgáltatóval rendelkezik:
- QueryStringRequestCultureProvider
- CookieRequestCultureProvider
- AcceptLanguageHeaderRequestCultureProvider
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"); }));
- AddInitialRequestCultureProvider A bővítménymetódus használatával állítsa be az egyéni szolgáltatót kezdeti szolgáltatóként.
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).