Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/mercurial/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Blazor Blazer组件-本地化不适用于语言更改_Blazor_Blazor Server Side - Fatal编程技术网

Blazor Blazer组件-本地化不适用于语言更改

Blazor Blazer组件-本地化不适用于语言更改,blazor,blazor-server-side,Blazor,Blazor Server Side,我创建了用于本地化的资源文件。页面加载时,它设置当前区域性信息,但从下拉列表更改语言时,它不会更改 这是我的密码 MainLayout.razor: @inherits LayoutComponentBase @inject NavigationManager NavigationManager <div class="sidebar"> <NavMenu /> </div> <div class="main&quo

我创建了用于本地化的资源文件。页面加载时,它设置当前区域性信息,但从下拉列表更改语言时,它不会更改

这是我的密码

MainLayout.razor:

@inherits LayoutComponentBase
@inject NavigationManager NavigationManager

<div class="sidebar">
  <NavMenu />
</div>

<div class="main">
   <div class="top-row px-4">
      <select @onchange="OnSelected">
         <option value="en">English</option>
         <option value="de">German</option>
      </select>
   </div>
  <div class="content px-4">
     @Body
  </div>
</div>

@code {
   private void OnSelected(ChangeEventArgs e)
   {
      var selectedCulture = e.Value.ToString();
      CultureInfo.CurrentUICulture = 
         CultureInfo.GetCultures(CultureTypes.AllCultures)
            .First(c => c.Name == selectedCulture);
   }
}
@page "/"
@inject IStringLocalizer<Localization> localizer

<h3>@localizer["Title"]</h3>
@localizer["Content"]
public class Program
{
    public static void Main(string[] args)
    {
        CreateHostBuilder(args).Build().Run();
        
    }

    public static IHostBuilder CreateHostBuilder(string[] args) =>
        Host.CreateDefaultBuilder(args)
            .ConfigureWebHostDefaults(webBuilder =>
            {
                webBuilder.UseStartup<Startup>();
            });
}
public class Startup
{
    public Startup(IConfiguration configuration)
    {
        Configuration = configuration;
    }

    public IConfiguration Configuration { get; }

    public void ConfigureServices(IServiceCollection services)
    {
        services.AddRazorPages();
        services.AddServerSideBlazor();
        
        services.AddLocalization(options => { options.ResourcesPath = "Resources"; });
        var supportedCultures = new List<CultureInfo> { new CultureInfo("en"), new CultureInfo("de") };
        services.Configure<RequestLocalizationOptions>(options =>
        {
            options.DefaultRequestCulture = new Microsoft.AspNetCore.Localization.RequestCulture("de");
            options.SupportedUICultures = supportedCultures;
        });
    }

    
    public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
    {
        if (env.IsDevelopment())
        {
            app.UseDeveloperExceptionPage();
        }
        else
        {
            app.UseExceptionHandler("/Error");
            // The default HSTS value is 30 days. You may want to change this for production scenarios, see https://aka.ms/aspnetcore-hsts.
            app.UseHsts();
        }

        app.UseHttpsRedirection();
        app.UseStaticFiles();
        app.UseRequestLocalization(app.ApplicationServices.GetRequiredService<IOptions<RequestLocalizationOptions>>().Value);
        app.UseRouting();

        app.ApplicationServices
            .UseBootstrapProviders()
            .UseFontAwesomeIcons();

        app.UseEndpoints(endpoints =>
        {
            endpoints.MapRazorPages();
            endpoints.MapBlazorHub();
            endpoints.MapFallbackToPage("/_Host");
        });
    }
}
@继承LayoutComponentBase
@注入NavigationManager NavigationManager
英语
德国的
@身体
@代码{
已选择私有无效(ChangeEventArgs e)
{
var selectedCulture=e.Value.ToString();
CultureInfo.CurrentUICulture=
CultureInfo.GetCultures(CultureType.AllCultures)
.First(c=>c.Name==selectedCulture);
}
}
本地化。razor:

@inherits LayoutComponentBase
@inject NavigationManager NavigationManager

<div class="sidebar">
  <NavMenu />
</div>

<div class="main">
   <div class="top-row px-4">
      <select @onchange="OnSelected">
         <option value="en">English</option>
         <option value="de">German</option>
      </select>
   </div>
  <div class="content px-4">
     @Body
  </div>
</div>

@code {
   private void OnSelected(ChangeEventArgs e)
   {
      var selectedCulture = e.Value.ToString();
      CultureInfo.CurrentUICulture = 
         CultureInfo.GetCultures(CultureTypes.AllCultures)
            .First(c => c.Name == selectedCulture);
   }
}
@page "/"
@inject IStringLocalizer<Localization> localizer

<h3>@localizer["Title"]</h3>
@localizer["Content"]
public class Program
{
    public static void Main(string[] args)
    {
        CreateHostBuilder(args).Build().Run();
        
    }

    public static IHostBuilder CreateHostBuilder(string[] args) =>
        Host.CreateDefaultBuilder(args)
            .ConfigureWebHostDefaults(webBuilder =>
            {
                webBuilder.UseStartup<Startup>();
            });
}
public class Startup
{
    public Startup(IConfiguration configuration)
    {
        Configuration = configuration;
    }

    public IConfiguration Configuration { get; }

    public void ConfigureServices(IServiceCollection services)
    {
        services.AddRazorPages();
        services.AddServerSideBlazor();
        
        services.AddLocalization(options => { options.ResourcesPath = "Resources"; });
        var supportedCultures = new List<CultureInfo> { new CultureInfo("en"), new CultureInfo("de") };
        services.Configure<RequestLocalizationOptions>(options =>
        {
            options.DefaultRequestCulture = new Microsoft.AspNetCore.Localization.RequestCulture("de");
            options.SupportedUICultures = supportedCultures;
        });
    }

    
    public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
    {
        if (env.IsDevelopment())
        {
            app.UseDeveloperExceptionPage();
        }
        else
        {
            app.UseExceptionHandler("/Error");
            // The default HSTS value is 30 days. You may want to change this for production scenarios, see https://aka.ms/aspnetcore-hsts.
            app.UseHsts();
        }

        app.UseHttpsRedirection();
        app.UseStaticFiles();
        app.UseRequestLocalization(app.ApplicationServices.GetRequiredService<IOptions<RequestLocalizationOptions>>().Value);
        app.UseRouting();

        app.ApplicationServices
            .UseBootstrapProviders()
            .UseFontAwesomeIcons();

        app.UseEndpoints(endpoints =>
        {
            endpoints.MapRazorPages();
            endpoints.MapBlazorHub();
            endpoints.MapFallbackToPage("/_Host");
        });
    }
}
@page/“
@注入IStringLocalizer定位器
@定位器[“标题”]
@定位器[“内容”]
Program.cs:

@inherits LayoutComponentBase
@inject NavigationManager NavigationManager

<div class="sidebar">
  <NavMenu />
</div>

<div class="main">
   <div class="top-row px-4">
      <select @onchange="OnSelected">
         <option value="en">English</option>
         <option value="de">German</option>
      </select>
   </div>
  <div class="content px-4">
     @Body
  </div>
</div>

@code {
   private void OnSelected(ChangeEventArgs e)
   {
      var selectedCulture = e.Value.ToString();
      CultureInfo.CurrentUICulture = 
         CultureInfo.GetCultures(CultureTypes.AllCultures)
            .First(c => c.Name == selectedCulture);
   }
}
@page "/"
@inject IStringLocalizer<Localization> localizer

<h3>@localizer["Title"]</h3>
@localizer["Content"]
public class Program
{
    public static void Main(string[] args)
    {
        CreateHostBuilder(args).Build().Run();
        
    }

    public static IHostBuilder CreateHostBuilder(string[] args) =>
        Host.CreateDefaultBuilder(args)
            .ConfigureWebHostDefaults(webBuilder =>
            {
                webBuilder.UseStartup<Startup>();
            });
}
public class Startup
{
    public Startup(IConfiguration configuration)
    {
        Configuration = configuration;
    }

    public IConfiguration Configuration { get; }

    public void ConfigureServices(IServiceCollection services)
    {
        services.AddRazorPages();
        services.AddServerSideBlazor();
        
        services.AddLocalization(options => { options.ResourcesPath = "Resources"; });
        var supportedCultures = new List<CultureInfo> { new CultureInfo("en"), new CultureInfo("de") };
        services.Configure<RequestLocalizationOptions>(options =>
        {
            options.DefaultRequestCulture = new Microsoft.AspNetCore.Localization.RequestCulture("de");
            options.SupportedUICultures = supportedCultures;
        });
    }

    
    public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
    {
        if (env.IsDevelopment())
        {
            app.UseDeveloperExceptionPage();
        }
        else
        {
            app.UseExceptionHandler("/Error");
            // The default HSTS value is 30 days. You may want to change this for production scenarios, see https://aka.ms/aspnetcore-hsts.
            app.UseHsts();
        }

        app.UseHttpsRedirection();
        app.UseStaticFiles();
        app.UseRequestLocalization(app.ApplicationServices.GetRequiredService<IOptions<RequestLocalizationOptions>>().Value);
        app.UseRouting();

        app.ApplicationServices
            .UseBootstrapProviders()
            .UseFontAwesomeIcons();

        app.UseEndpoints(endpoints =>
        {
            endpoints.MapRazorPages();
            endpoints.MapBlazorHub();
            endpoints.MapFallbackToPage("/_Host");
        });
    }
}
公共类程序
{
公共静态void Main(字符串[]args)
{
CreateHostBuilder(args.Build().Run();
}
公共静态IHostBuilder CreateHostBuilder(字符串[]args)=>
Host.CreateDefaultBuilder(args)
.ConfigureWebHostDefaults(webBuilder=>
{
webBuilder.UseStartup();
});
}
Startup.cs:

@inherits LayoutComponentBase
@inject NavigationManager NavigationManager

<div class="sidebar">
  <NavMenu />
</div>

<div class="main">
   <div class="top-row px-4">
      <select @onchange="OnSelected">
         <option value="en">English</option>
         <option value="de">German</option>
      </select>
   </div>
  <div class="content px-4">
     @Body
  </div>
</div>

@code {
   private void OnSelected(ChangeEventArgs e)
   {
      var selectedCulture = e.Value.ToString();
      CultureInfo.CurrentUICulture = 
         CultureInfo.GetCultures(CultureTypes.AllCultures)
            .First(c => c.Name == selectedCulture);
   }
}
@page "/"
@inject IStringLocalizer<Localization> localizer

<h3>@localizer["Title"]</h3>
@localizer["Content"]
public class Program
{
    public static void Main(string[] args)
    {
        CreateHostBuilder(args).Build().Run();
        
    }

    public static IHostBuilder CreateHostBuilder(string[] args) =>
        Host.CreateDefaultBuilder(args)
            .ConfigureWebHostDefaults(webBuilder =>
            {
                webBuilder.UseStartup<Startup>();
            });
}
public class Startup
{
    public Startup(IConfiguration configuration)
    {
        Configuration = configuration;
    }

    public IConfiguration Configuration { get; }

    public void ConfigureServices(IServiceCollection services)
    {
        services.AddRazorPages();
        services.AddServerSideBlazor();
        
        services.AddLocalization(options => { options.ResourcesPath = "Resources"; });
        var supportedCultures = new List<CultureInfo> { new CultureInfo("en"), new CultureInfo("de") };
        services.Configure<RequestLocalizationOptions>(options =>
        {
            options.DefaultRequestCulture = new Microsoft.AspNetCore.Localization.RequestCulture("de");
            options.SupportedUICultures = supportedCultures;
        });
    }

    
    public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
    {
        if (env.IsDevelopment())
        {
            app.UseDeveloperExceptionPage();
        }
        else
        {
            app.UseExceptionHandler("/Error");
            // The default HSTS value is 30 days. You may want to change this for production scenarios, see https://aka.ms/aspnetcore-hsts.
            app.UseHsts();
        }

        app.UseHttpsRedirection();
        app.UseStaticFiles();
        app.UseRequestLocalization(app.ApplicationServices.GetRequiredService<IOptions<RequestLocalizationOptions>>().Value);
        app.UseRouting();

        app.ApplicationServices
            .UseBootstrapProviders()
            .UseFontAwesomeIcons();

        app.UseEndpoints(endpoints =>
        {
            endpoints.MapRazorPages();
            endpoints.MapBlazorHub();
            endpoints.MapFallbackToPage("/_Host");
        });
    }
}
公共类启动
{
公共启动(IConfiguration配置)
{
配置=配置;
}
公共IConfiguration配置{get;}
public void配置服务(IServiceCollection服务)
{
services.AddRazorPages();
AddServerSideBlazor();
AddLocalization(options=>{options.ResourcesPath=“Resources”;});
var supportedCultures=new List{new CultureInfo(“en”)、new CultureInfo(“de”)};
配置(选项=>
{
options.DefaultRequestCulture=new Microsoft.AspNetCore.Localization.RequestCulture(“de”);
options.supportedCultures=supportedCultures;
});
}
public void配置(IApplicationBuilder应用程序、IWebHostEnvironment环境)
{
if(env.IsDevelopment())
{
app.UseDeveloperExceptionPage();
}
其他的
{
app.UseExceptionHandler(“/Error”);
//默认的HSTS值为30天。您可能希望在生产场景中更改此值,请参阅https://aka.ms/aspnetcore-hsts.
app.UseHsts();
}
app.UseHttpsRedirection();
app.UseStaticFiles();
app.UseRequestLocalization(app.ApplicationServices.GetRequiredService().Value);
app.UseRouting();
app.ApplicationServices
.UseBootstrapProviders()的
.UseFontAwesomeIcons();
app.UseEndpoints(端点=>
{
endpoints.MapRazorPages();
endpoints.MapBlazorHub();
endpoints.MapFallbackToPage(“/_主机”);
});
}
}
Resx:

@inherits LayoutComponentBase
@inject NavigationManager NavigationManager

<div class="sidebar">
  <NavMenu />
</div>

<div class="main">
   <div class="top-row px-4">
      <select @onchange="OnSelected">
         <option value="en">English</option>
         <option value="de">German</option>
      </select>
   </div>
  <div class="content px-4">
     @Body
  </div>
</div>

@code {
   private void OnSelected(ChangeEventArgs e)
   {
      var selectedCulture = e.Value.ToString();
      CultureInfo.CurrentUICulture = 
         CultureInfo.GetCultures(CultureTypes.AllCultures)
            .First(c => c.Name == selectedCulture);
   }
}
@page "/"
@inject IStringLocalizer<Localization> localizer

<h3>@localizer["Title"]</h3>
@localizer["Content"]
public class Program
{
    public static void Main(string[] args)
    {
        CreateHostBuilder(args).Build().Run();
        
    }

    public static IHostBuilder CreateHostBuilder(string[] args) =>
        Host.CreateDefaultBuilder(args)
            .ConfigureWebHostDefaults(webBuilder =>
            {
                webBuilder.UseStartup<Startup>();
            });
}
public class Startup
{
    public Startup(IConfiguration configuration)
    {
        Configuration = configuration;
    }

    public IConfiguration Configuration { get; }

    public void ConfigureServices(IServiceCollection services)
    {
        services.AddRazorPages();
        services.AddServerSideBlazor();
        
        services.AddLocalization(options => { options.ResourcesPath = "Resources"; });
        var supportedCultures = new List<CultureInfo> { new CultureInfo("en"), new CultureInfo("de") };
        services.Configure<RequestLocalizationOptions>(options =>
        {
            options.DefaultRequestCulture = new Microsoft.AspNetCore.Localization.RequestCulture("de");
            options.SupportedUICultures = supportedCultures;
        });
    }

    
    public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
    {
        if (env.IsDevelopment())
        {
            app.UseDeveloperExceptionPage();
        }
        else
        {
            app.UseExceptionHandler("/Error");
            // The default HSTS value is 30 days. You may want to change this for production scenarios, see https://aka.ms/aspnetcore-hsts.
            app.UseHsts();
        }

        app.UseHttpsRedirection();
        app.UseStaticFiles();
        app.UseRequestLocalization(app.ApplicationServices.GetRequiredService<IOptions<RequestLocalizationOptions>>().Value);
        app.UseRouting();

        app.ApplicationServices
            .UseBootstrapProviders()
            .UseFontAwesomeIcons();

        app.UseEndpoints(endpoints =>
        {
            endpoints.MapRazorPages();
            endpoints.MapBlazorHub();
            endpoints.MapFallbackToPage("/_Host");
        });
    }
}
本地化.resx:

本地化.de.resx:

更改MainLayout.razor页面中的语言时,不会根据语言选择更改Localization.razor页面中的文本。更改所有页面中的文本需要做什么?

这可能会帮助您: