Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-core/3.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
Localization ASP.NET核心1.0本地化_Localization_Asp.net Core_Asp.net Core Mvc_Asp.net Core 1.0_Asp.net Core Localization - Fatal编程技术网

Localization ASP.NET核心1.0本地化

Localization ASP.NET核心1.0本地化,localization,asp.net-core,asp.net-core-mvc,asp.net-core-1.0,asp.net-core-localization,Localization,Asp.net Core,Asp.net Core Mvc,Asp.net Core 1.0,Asp.net Core Localization,我遵循了指南,并在我的web应用程序中成功地配置了本地化 只有两件事我不明白 让我们看一些代码: Startup.cs(配置服务) services.Configure(选项=> { var supportedCultures=new[] { 新文化信息(“it”), 新文化信息(“美国”), 新文化信息(“en GB”) }; options.DefaultRequestCulture=新的RequestCulture(区域性:“it”,uiCulture:“it”); }); Startu

我遵循了指南,并在我的web应用程序中成功地配置了本地化

只有两件事我不明白

让我们看一些代码:

Startup.cs(配置服务)

services.Configure(选项=>
{
var supportedCultures=new[]
{
新文化信息(“it”),
新文化信息(“美国”),
新文化信息(“en GB”)
};
options.DefaultRequestCulture=新的RequestCulture(区域性:“it”,uiCulture:“it”);
});
Startup.cs(配置)

var locOptions=app.ApplicationServices.GetService();
app.UseRequestLocalization(locOptions.Value);
正如上面链接的教程中所解释的,我创建了一个_SelectLanguagePartial.cshtml(并在我的控制器中添加了建议的方法),以编程方式更改语言

\u选择LanguagePartial.cshtml

@using Microsoft.AspNetCore.Builder
@using Microsoft.AspNetCore.Localization
@using Microsoft.AspNetCore.Mvc.Localization
@using Microsoft.Extensions.Options

@inject IViewLocalizer Localizer
@inject IOptions<RequestLocalizationOptions> LocOptions

@{
   var requestCulture = Context.Features.Get<IRequestCultureFeature>();
   var cultureItems = LocOptions.Value.SupportedUICultures
    .Select(c => new SelectListItem { Value = c.Name, Text = c.DisplayName })
    .ToList();
}

<div title="@Localizer["RequestCultureProvider"] @requestCulture?.Provider?.GetType().Name">
<form id="selectLanguage"
      asp-action="SetLanguage" asp-route-returnUrl="@Context.Request.Path"
      method="post" class="form-horizontal" role="form" onchange="submit()">
    @Localizer["Language"]: <select name="culture" asp-for="@requestCulture.RequestCulture.UICulture.Name" asp-items="cultureItems" class="btn btn-default"></select>
</form>
@使用Microsoft.AspNetCore.Builder
@使用Microsoft.AspNetCore.Localization
@使用Microsoft.AspNetCore.Mvc.Localization
@使用Microsoft.Extensions.Options
@注入IViewLocalizer定位器
@注入IOptions位置选项
@{
var requestCulture=Context.Features.Get();
var cultureItems=LocOptions.Value.SupportedUltures
.Select(c=>newselectListItem{Value=c.Name,Text=c.DisplayName})
.ToList();
}
@定位器[“语言”]:

第一个问题是,在第一次启动时,当没有语言cookie时,尽管我已将其配置为默认语言,但该站点显示为en-US区域性。尽管如此,我可以正确地更改语言,如果存在语言cookie,则网站将以正确的语言显示。 为什么本地化框架将en-US作为默认语言加载

第二个问题是,如果我改变语言,cshtml中加载的“cultureItems”的本地化不会改变,仍然是加载的广告启动。 我错过了什么


提前感谢大家:)

首先,如您所见,您确实需要在options对象上设置.SupportedCulture和.SupportedCulture属性:

options.SupportedCultures=SupportedCultures
options.supportedCultures=supportedCultures

我发现有趣的是,这种行为是零星的,但我只是删除了默认的请求区域性设置,名称又以它们自己的母语出现了——也许这就是预期的行为

//options.DefaultRequestCulture=newrequestculture(区域性:“en-US”,ui区域性:“en-US”)


希望这有帮助。

首先,正如您所看到的,您确实需要在options对象上设置.SupportedCulture和.SupportedCulture属性:

options.SupportedCultures=SupportedCultures
options.supportedCultures=supportedCultures

我发现有趣的是,这种行为是零星的,但我只是删除了默认的请求区域性设置,名称又以它们自己的母语出现了——也许这就是预期的行为

//options.DefaultRequestCulture=newrequestculture(区域性:“en-US”,ui区域性:“en-US”)


希望这能有所帮助。

对于第一个问题,DefaultRequestCulture属性设置在其他受支持的区域性均不可用时要使用的默认区域性。删除en-US支持的区域性或将浏览器的区域性更改为不支持的区域性,您将看到这一操作。至于第二个问题,你看到的语言列表的价值是什么?我把它们看作是母语中的语言名称。好的,第一个问题是,当我的浏览器文化是它的时候,为什么框架会加载我们呢?(这也是一种受支持的文化)。对于第二个问题,我看到了所选区域性中的语言列表,因此,在这种情况下为en-US。对于第一个问题,DefaultRequestCulture属性设置了在其他受支持的区域性均不可用时使用的默认区域性。删除en-US支持的区域性或将浏览器的区域性更改为不支持的区域性,您将看到这一操作。至于第二个问题,你看到的语言列表的价值是什么?我把它们看作是母语中的语言名称。好的,第一个问题是,当我的浏览器文化是它的时候,为什么框架会加载我们呢?(这也是一种受支持的文化)。对于第二个问题,我看到了所选区域性中的语言列表,因此,在这种情况下,上面的代码中没有显示en-US.in,而是显示options.SupportedCultures=SupportedCultures;options.supportedCultures=supportedCultures;在options.DefaultRequestCulture=….之后显示,对此表示抱歉。但是,我尝试删除默认的请求区域性设置,但名称仍以英文显示:(在上面的代码中未显示,但options.SupportedCultures=SupportedCultures;options.SupportedCultures=SupportedCultures;显示在options.DefaultRequestCulture=…)之后,对此表示抱歉。不过,我尝试删除默认的请求区域性设置,但名称仍以英文显示:(
var locOptions = app.ApplicationServices.GetService<IOptions<RequestLocalizationOptions>>();
app.UseRequestLocalization(locOptions.Value);
@using Microsoft.AspNetCore.Builder
@using Microsoft.AspNetCore.Localization
@using Microsoft.AspNetCore.Mvc.Localization
@using Microsoft.Extensions.Options

@inject IViewLocalizer Localizer
@inject IOptions<RequestLocalizationOptions> LocOptions

@{
   var requestCulture = Context.Features.Get<IRequestCultureFeature>();
   var cultureItems = LocOptions.Value.SupportedUICultures
    .Select(c => new SelectListItem { Value = c.Name, Text = c.DisplayName })
    .ToList();
}

<div title="@Localizer["RequestCultureProvider"] @requestCulture?.Provider?.GetType().Name">
<form id="selectLanguage"
      asp-action="SetLanguage" asp-route-returnUrl="@Context.Request.Path"
      method="post" class="form-horizontal" role="form" onchange="submit()">
    @Localizer["Language"]: <select name="culture" asp-for="@requestCulture.RequestCulture.UICulture.Name" asp-items="cultureItems" class="btn btn-default"></select>
</form>