Laden...

VS 2019 - ASP.NET Core Webanwendung: Keine Lokalisierung beim Debuggen

Erstellt von emuuu vor 4 Jahren Letzter Beitrag vor 4 Jahren 957 Views
emuuu Themenstarter:in
286 Beiträge seit 2011
vor 4 Jahren
VS 2019 - ASP.NET Core Webanwendung: Keine Lokalisierung beim Debuggen

Guten Tag zusammen,

habe gerade ein kleineres Problem mit VS 2019: Ich habe eine Webanwendung die in Chrome gedebuggt wird, wobei die einzelnen Views mit IHtmlLocalizer lokalisiert werden.
Jetzt besteht seit dem Update auf VS 2019 (vorher 2017) das Problem, dass die Views ohne Lokalisierung angezeigt werden.

In der Chrome-Instanz habe ich schon alle Sprachen rausgeschmissen und nur "Deutsch" hinterlegt (es kommen im Log auch keine Meldungen wie unsupported cultures "xy").

Überseh ich im Debugger irgend eine Option und locales sind in VS 2019 per default deaktiviert?!

Im Projekt selber hat sich nix geändert, also kann es daran eher nicht liegen.
Falls es doch die Config sein sollte: .NET Core 2.2


        public static IServiceCollection ConfigureLocalization(this IServiceCollection services, IConfigurationRoot configuration)
        {
            var locConfig = configuration.GetConfiguration<CultureOptions>();

            services.Configure<RequestLocalizationOptions>(options =>
            {
                var supportedCultures = locConfig.SupportedCultures.Select(e => new CultureInfo(e)).ToList();
                options.DefaultRequestCulture = new RequestCulture(locConfig.DefaultCulture);
                options.SupportedCultures = supportedCultures;
                options.SupportedUICultures = supportedCultures;
            });

            services.AddLocalization(options => options.ResourcesPath = "Resources");
            return services;
        }


        public static IApplicationBuilder UseLocalization(this IApplicationBuilder app)
        {
            var options = app.ApplicationServices.GetService<IOptions<RequestLocalizationOptions>>();
            app.UseRequestLocalization(options.Value);

            return app;
        }

  "Localization": {
    "DefaultCulture": "de",
    "SupportedCultures": [
      "de"
    ]
  }

Vielen Dank und beste Grüße
emuuu

2+2=5( (für extrem große Werte von 2)

1.029 Beiträge seit 2010
vor 4 Jahren

Hi,

also in VS2019 hat sich meines Wissens nach nichts daran geändert. (Hab meine Solutions auch von asp.net core 2.0 auf 2.2 geschoben und von VS 2017 auf VS 2019 gewechselt - ohne Probleme im Bereich Lokalisierung - einziger Unterschied bei uns sollte der RequestCultureProvider sein)

Da du nur eine einzige Sprache registrierst und sicher auch nur eine Lokalisierung verfügbar machst ist eigentlich davon auszugehen, dass mit den RequestCultureProvidern nichts verkehrt ist - sind ja vorkonfiguriert - das klingt eher danach, als ob er gar nicht erst versucht etwas zu lokalisieren - sprich - wurde in der Startup möglicherweise MVC vor Localization konfiguriert/aufgerufen?

LG

emuuu Themenstarter:in
286 Beiträge seit 2011
vor 4 Jahren

wurde in der Startup möglicherweise MVC vor Localization konfiguriert/aufgerufen?

Leider nein, die Reihenfolge ist wie folgt:


            services
                .ConfigureLocalization(Configuration)
                .ConfigureIdentityServices(Configuration)
                .ConfigureDataServices(Configuration)
                .ConfigureMvc(Configuration);

wobei in ConfigureMvc das hier vorkommt:


            services.AddMvc()
                .AddViewLocalization()
                .AddDataAnnotationsLocalization();

Was ich eben am wenigstens verstehe ist, dass es vorher funktioniert hat und ich die Lokalisierung eigentlich schon länger nicht mehr angepackt habe - also auch eigentlich nicht versehentlich was geändert haben kann.

Edit: Habe gerade nochmal die commits durchgeschaut -> sowohl startup.cs als auch ConfigureLocalization & ConfigureMvc wurden > 3 Monate nicht verändert.

Update:
In der .csproj hat sich in der PropertyGroup folgendes eingeschlichen


 <AssemblyName>x</AssemblyName>

Whatsoever das rauszunehmen hat das Problem gelöst.

2+2=5( (für extrem große Werte von 2)

1.029 Beiträge seit 2010
vor 4 Jahren

Hi,

nein das meinte ich nicht - in welcher Reihenfolge man Configure aufruft ist ja in vielen Fällen egal - wichtig ist, dass man app.Use<> in der richtigen Reihenfolge aufruft.

Grundsätzlich müssen bei ASP.NET pro Request verschiedene Pipelines/Middlewares durchlaufen werden - das passiert in der Reihenfolge der Aufrufe von app.Use<>,
also normal über:


app.UseLocalization(Configuration);
// erst im anschluss mvc:
// app.UseMVC

Erst anschließend kann man dann mit MVC arbeiten und hoffen, dass die Lokalisierung funktioniert.

LG