加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > asp.Net > 正文

asp.net-mvc – asp.net MVC:本地化

发布时间:2020-12-16 06:52:15 所属栏目:asp.Net 来源:网络整理
导读:我在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.Current
我在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方法中,但结果是一样的.

谢谢

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

解决方法

我在我的asp.net mvc应用程序中遇到了同样的困境(如何实现本地化).

我按照here发布的说明进行操作,它就像一个魅力.

所以我在Content下创建了一个名为Localization的文件夹,然后我为我要翻译的每种语言创建了Resources resx文件.请记住,resx文件名有一个约定.即

Resources.resx是一切的默认回退.

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

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

等等

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

编辑:

我想补充一点,我从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");
    }
}

所有控制器都继承自此类.

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

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

<%= Resources.Strings.TranslatedTerm %>

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读