asp.net MVC:本地化

2024-01-27

我的目标语言在 Session["lang"] 中,它是“en”或“it”。我已将其添加到 Site.master 中:

<script runat="server">
  void Page_Load(object sender, EventArgs e) {
    string lang = Session["lang"].ToString();
    System.Threading.Thread.CurrentThread.CurrentCulture = System.Globalization.CultureInfo.CreateSpecificCulture(lang);
    System.Threading.Thread.CurrentThread.CurrentUICulture = System.Globalization.CultureInfo.CreateSpecificCulture(lang);
  }
</script>

然后我想调用这样的资源字符串:

<asp:Label ID="Label1" runat="server" Text="<%$ Resources:Global, test %>"></asp:Label>

我在 App_GlobalResources 中有两个文件,名为 Global.resx 和 Global.en.resx。

问题是,无论 lang 变量中的内容是什么,我总是从主 Global.resx 中获取结果,而我从未从 Global.en.resx 中获取英文版本

我完全做错了?

我尝试将 System.Threading... 部分放入 Global.asax.cs 中的 Application_PreRequestHandlerExecute 方法中,但结果是相同的。

Thanks

PS:我问的是一种以简单的方式完成这项工作的方法。如果我要使用复杂的方式,我会这样做:http://helios.ca/2009/05/27/aspnet-mvc-and-localization/ http://helios.ca/2009/05/27/aspnet-mvc-and-localization/


我在我的 ASP.NET MVC 应用程序中遇到了同样的困境(如何实现本地化)。

我按照发布的说明进行操作here http://odetocode.com/blogs/scott/archive/2009/07/15/13211.aspx它就像一个魅力。

因此,我在内容下创建了一个名为 Localization 的文件夹,然后为我要翻译的每种语言创建资源 resx 文件。请记住,resx 文件名有一个约定。 IE

Resources.resx 是所有内容的默认回退。

Resources.en-GB.resx 适用于英语 GB

Resources.en-US.resx 适用于美国英语

etc.

只需确保按照链接中发布的说明进行嵌入并使资源在应用程序中的所有位置(视图、控制器等)可用

Edit:

我想补充一点,我从 web.config 中省略了这一行,因为我想从我的应用程序中手动设置本地。

<globalization uiCulture="auto" culture="auto"/>

相反,我创建了以下类:

    public class SmartController : Controller
{
    public SmartController()
    {
        System.Threading.Thread.CurrentThread.CurrentCulture = CultureInfo.GetCultureInfo("en-US");
        System.Threading.Thread.CurrentThread.CurrentUICulture = CultureInfo.GetCultureInfo("en-US");
    }
}

所有控制器都继承自该类。

由于这是区域设置的管理集,我必须从我的应用程序设置中进行设置。您可以从 Cookie 中读取并设置它,或者以其他方式。在我看来,这是我迄今为止遇到的最简单的本地化解决方案。

实现后,您可以通过以下简单的代码行引用您添加的任何字符串,无需额外的代码。

<%= Resources.Strings.TranslatedTerm %>
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

asp.net MVC:本地化 的相关文章

随机推荐