【问题标题】:Localization in asp.net mvcasp.net mvc 中的本地化
【发布时间】:2010-07-30 09:32:23
【问题描述】:

朋友们,

我在 asp.net mvc 2.0 中工作,我正处于想将网站内容(菜单项、标签等)翻译成从下拉列表中选择的预定义语言的阶段。我希望它通过异步请求执行(如果可能的话)。我之前没有在 Web 表单或 asp.net mvc 中实现全球化/本地化的经验。因此,我在现阶段完成这项任务需要一些有用的指针(对于初学者)。

请帮帮我:(

提前致谢:-|

【问题讨论】:

    标签: asp.net-mvc-2 localization globalization


    【解决方案1】:

    我不明白为什么你会使用 Ajax 来本地化整个页面(菜单、标签、错误消息等),使所有 ajax 请求完全本地化页面将比重新加载页面花费更长的时间正确的文化并让 asp.net 为您进行本地化。

    话虽如此,在 asp.net mvc 中有很多本地化方法。它不像 Webforms 那样简单,但有一些不错的博客文章,甚至可以复制一些代码来帮助你。

    查看详情 How to localize ASP.NET MVC application?

    【讨论】:

    • 感谢您的回复!我为什么要异步本地化行为是有原因的。我正在处理的页面中的大部分内容已经翻译,这些内容来自数据库。这个翻译的内容是不同的翻译,并且预定义在数据库中。我不希望此内容与整页本地化重叠,而仅与标签等重叠。
    • 那么我猜你将不得不自己实现一些东西。我建议做一个返回所有标签的字符串集合的操作。 (JsonResult) 您可以将字符串存储在 .resx 文件或数据库中。
    【解决方案2】:

    全球化:跨文化/地区的设计和开发过程。 本地化:定制特定语言的过程。即,在目标国家很容易使用。

    打开您的 Global.asax 并输入此代码

               protected void Application_BeginRequest(object sender, EventArgs e)
        {
            HttpCookie cookie = HttpContext.Current.Request.Cookies["Language"];
            if (cookie != null && cookie.Value != null)
            {
                System.Threading.Thread.CurrentThread.CurrentCulture = new System.Globalization.CultureInfo(cookie.Value);
                System.Threading.Thread.CurrentThread.CurrentUICulture = new System.Globalization.CultureInfo(cookie.Value);
            }
            else
            {
                System.Threading.Thread.CurrentThread.CurrentCulture = new System.Globalization.CultureInfo("en");
                System.Threading.Thread.CurrentThread.CurrentUICulture = new System.Globalization.CultureInfo("en");
            }
        }
    

    打开你的控制器并输入这段代码

      public ActionResult ChangeLanguage(string lan)
        {
    
            if (lan != null)
            {
                Thread.CurrentThread.CurrentCulture = CultureInfo.CreateSpecificCulture(lan);
                Thread.CurrentThread.CurrentUICulture = new CultureInfo(lan);
                var cookie = new HttpCookie("Language");
                cookie.Value = lan;
                Response.Cookies.Add(cookie);
            }
            return RedirectToAction("Index","Home");
        }
    

    这是您的更改语言功能..

    打开您的查看页面并添加此类 html 代码

    <h1>Localization Demo Project</h1>
    
    @Html.ActionLink("Local Language", "ChangeLanguage", "Home", new { selectedlanguage = "ne" }, new { @class = "btn btn-default" })
    @Html.ActionLink("English Language", "ChangeLanguage", "Home", new { selectedlanguage = "en" }, new { @class = "btn btn-default" })
    
    <div class="row">
        <label>@LocalizationDemo.Language.Localization.First_name</label>
        <br />
        <label>@LocalizationDemo.Language.Localization.Last_name</label>
        <br />
        <label>@LocalizationDemo.Language.Localization.Address</label>
    </div>
    

    更多细节一步一步点击此链接

    http://www.findandsolve.com/articles/localization-in-asp.net-mvc-razor-step-by-step

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2010-10-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多