gpt4 book ai didi

asp.net-mvc - Controller 内的 GetLocalResourceObject

转载 作者:行者123 更新时间:2023-12-04 06:10:08 27 4
gpt4 key购买 nike

我有一个 ajax 调用,它返回基于 httpcontext 的本地化成功消息,

        public ActionResult ReportViolation(string DiscussID) {

Enumeration.Lang rLang = (Request.Cookies["MAKANI.Localization.CurrentUICulture"].Value.Equals("ar-EG")) ?
Enumeration.Lang.Arabic : Enumeration.Lang.English;


if (Session["sId"] == null) return Json(false,
HttpContext.GetLocalResourceObject("~/Views/Home/Index.cshtml", "msgDiscussViolationRegister").ToString(),
0,
null);
else {
long userId = AuthenticationModule.GetUserId(Convert.ToInt32(Session["sId"]));
bool rReport = Discuss_BL.ReportViolation(Convert.ToInt32(DiscussID), userId);
string rError = rReport
? HttpContext.GetLocalResourceObject("~/Views/Home/Index.cshtml", "msgDiscussViolationSuccess").ToString()
: HttpContext.GetLocalResourceObject("~/Views/Home/Index.cshtml", "msgDiscussViolationExist").ToString();
return Json(rReport, rError, 0, null);
}

}

但是,资源总是发回英文版本,这是从 Controller 使用 HttpContext 的正确方法吗?

——
问候。

叶海亚·萨拉姆

最佳答案

HttpContext用作 服务器 上下文,默认情况下它将返回操作系统的区域设置(准确地说是 CultureInfo.CurrentUICulture )。您需要以某种方式读取用户区域设置 - 通过查询 HttpContext.Current.Request.UserLanguages ,这可能是空的,或者通过明确地向用户询问此信息。

Scott Hanselman writes in his excellent article on globalization , ASP.Net 实际上可以为你设置工作线程文化( Thread.Current.UICultureThread.Current.Culture ),解析 Accept-Languages HTTP header 。只需将此代码段添加到您的 web.config <globalization> :

<system.web>
<globalization enableclientbasedculture="true" uiculture="auto" culture="auto">
...snip...</globalization></system.web>

请注意,用户可能没有正确设置他的浏览器,因此他应该始终可以选择覆盖语言设置。

关于asp.net-mvc - Controller 内的 GetLocalResourceObject,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7866427/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com