我将尝试更改
我已经尝试过
以下是我设置文化的方式:
如何设置当前区域?
编辑:
在
ASP.NET Web API 2
的文化。但我无法确定要覆盖哪个函数。我已经尝试过
ExecuteAsync
和Initialize
,但无论如何应用程序始终使用英文资源。以下是我设置文化的方式:
protected void SetCulture(string cultureName)
{
// Validate culture name
cultureName = CultureHelper.GetImplementedCulture(cultureName);
// Modify current thread's cultures
Thread.CurrentThread.CurrentCulture = new System.Globalization.CultureInfo(cultureName);
Thread.CurrentThread.CurrentUICulture = Thread.CurrentThread.CurrentCulture;
}
protected override void Initialize(HttpControllerContext controllerContext)
{
if (controllerContext.Request.Headers.AcceptLanguage != null &&
controllerContext.Request.Headers.AcceptLanguage.Count > 0)
{
string language = controllerContext.Request.Headers.AcceptLanguage.First().Value;
SetCulture(language);
}
base.Initialize(controllerContext);
}
在这里,资源总是英文。我已经监听了Thread.CurrentThread.CurrentCulture
,它显示为fr
private void SendConfirmationEmail(string userId)
{
...
UserManager.SendEmail(userId,
Resources.Resources.ConfirmAccount,
Resources.Resources.PleaseClickToConfirmAccount
+ callbackUrl);
}
如何设置当前区域?
编辑:
在
Global.asax
中设置区域后,我遇到了同样的问题。 protected void Application_BeginRequest(Object sender, EventArgs e)
{
HttpRequest currentRequest = HttpContext.Current.Request;
if (currentRequest.Headers.AllKeys.Contains("Accept-Language"))
{
string culture = currentRequest.Headers["Accept-Language"].ToString();
SetCulture(culture);
}
}
Thread.CurrentThread.CurrentCulture
等于 fr
。我不明白为什么资源仍然是英文!
编辑2
我在 Web API 项目的属性中创建了资源文件,现在它可以工作。
所以问题出在 resources.dll
上。
我不明白为什么 API 不能选择正确的资源文件。也许 resources.fr.resx
并没有和 dll 文件放在一起。