Asp.net 核心不改变 CultureInfo
Asp.net core dosn't change the CultureInfo
第一次用“en-GB”调用方法
那么 test2 是 en-GB。
第二次调用这个方法,测试到俄语,我该如何解决这个问题?
services.Configure<RequestLocalizationOptions>(options =>
{
var defaultCulture = new CultureInfo("ru-RU");
var englishCulture = new CultureInfo("en-GB");
var supportedCultures = new List<CultureInfo>
{
defaultCulture,
englishCulture
};
options.DefaultRequestCulture = new RequestCulture(defaultCulture,defaultCulture);
options.SupportedCultures = supportedCultures;
options.SupportedUICultures = supportedCultures;
var defaultCookieRequestProvider = options.RequestCultureProviders
.FirstOrDefault(rcp => rcp.GetType() == typeof(CookieRequestCultureProvider));
if (defaultCookieRequestProvider != null)
options.RequestCultureProviders.Remove(defaultCookieRequestProvider);
options.RequestCultureProviders
.Insert(0,
new CookieRequestCultureProvider()
{
CookieName = CookieRequestCultureProvider.DefaultCookieName,
Options = options
});
});
我有
var options = app.ApplicationServices.GetService<IOptions<RequestLocalizationOptions>>();
app.UseRequestLocalization(options.Value);
控制器 - 第二次调用它时仍然是俄语而不是英语
public async Task ChangeLocalization([FromBody] LocalizationDto inDto)
{
var test = CultureInfo.CurrentUICulture;
var settedCulture = new CultureInfo(inDto.CurrentCultureName);
Thread.CurrentThread.CurrentCulture = settedCulture;
Thread.CurrentThread.CurrentUICulture = settedCulture;
if (HttpContext.Request.Cookies.ContainsKey(CookieRequestCultureProvider.DefaultCookieName))
HttpContext.Response.Cookies.Delete(CookieRequestCultureProvider.DefaultCookieName);
HttpContext.Response.Cookies.Append(
CookieRequestCultureProvider.DefaultCookieName,
CookieRequestCultureProvider.MakeCookieValue(
new RequestCulture(settedCulture, settedCulture)));
var test2 = CultureInfo.CurrentUICulture;
}
同样的问题:
Response.Cookies.Append(
CookieRequestCultureProvider.DefaultCookieName,
CookieRequestCultureProvider.MakeCookieValue(new RequestCulture(settedCulture)),
new Microsoft.AspNetCore.Http.CookieOptions { Expires = DateTimeOffset.UtcNow.AddYears(1) });
通过添加解决:
this.httpClient.defaults.headers["接受语言"] = "en-GB";
vue js
通过添加解决:
this.httpClient.defaults.headers["Accept-Language"] = "en-GB";
到 vue js - 使用 axios!
第一次用“en-GB”调用方法 那么 test2 是 en-GB。
第二次调用这个方法,测试到俄语,我该如何解决这个问题?
services.Configure<RequestLocalizationOptions>(options =>
{
var defaultCulture = new CultureInfo("ru-RU");
var englishCulture = new CultureInfo("en-GB");
var supportedCultures = new List<CultureInfo>
{
defaultCulture,
englishCulture
};
options.DefaultRequestCulture = new RequestCulture(defaultCulture,defaultCulture);
options.SupportedCultures = supportedCultures;
options.SupportedUICultures = supportedCultures;
var defaultCookieRequestProvider = options.RequestCultureProviders
.FirstOrDefault(rcp => rcp.GetType() == typeof(CookieRequestCultureProvider));
if (defaultCookieRequestProvider != null)
options.RequestCultureProviders.Remove(defaultCookieRequestProvider);
options.RequestCultureProviders
.Insert(0,
new CookieRequestCultureProvider()
{
CookieName = CookieRequestCultureProvider.DefaultCookieName,
Options = options
});
});
我有
var options = app.ApplicationServices.GetService<IOptions<RequestLocalizationOptions>>();
app.UseRequestLocalization(options.Value);
控制器 - 第二次调用它时仍然是俄语而不是英语
public async Task ChangeLocalization([FromBody] LocalizationDto inDto)
{
var test = CultureInfo.CurrentUICulture;
var settedCulture = new CultureInfo(inDto.CurrentCultureName);
Thread.CurrentThread.CurrentCulture = settedCulture;
Thread.CurrentThread.CurrentUICulture = settedCulture;
if (HttpContext.Request.Cookies.ContainsKey(CookieRequestCultureProvider.DefaultCookieName))
HttpContext.Response.Cookies.Delete(CookieRequestCultureProvider.DefaultCookieName);
HttpContext.Response.Cookies.Append(
CookieRequestCultureProvider.DefaultCookieName,
CookieRequestCultureProvider.MakeCookieValue(
new RequestCulture(settedCulture, settedCulture)));
var test2 = CultureInfo.CurrentUICulture;
}
同样的问题:
Response.Cookies.Append(
CookieRequestCultureProvider.DefaultCookieName,
CookieRequestCultureProvider.MakeCookieValue(new RequestCulture(settedCulture)),
new Microsoft.AspNetCore.Http.CookieOptions { Expires = DateTimeOffset.UtcNow.AddYears(1) });
通过添加解决: this.httpClient.defaults.headers["接受语言"] = "en-GB"; vue js
通过添加解决:
this.httpClient.defaults.headers["Accept-Language"] = "en-GB";
到 vue js - 使用 axios!