Asp.net mvc 如何本地化ASP.NET MVC应用程序中的内容?

Asp.net mvc 如何本地化ASP.NET MVC应用程序中的内容?,asp.net-mvc,Asp.net Mvc,这是一个关于设置我们网站的语言和文化设置的问题,与我们从访问网站的用户那里读取的设置有关 假设我们的网站支持两种语言,英语(en)和德语(de)。我们还假设我们想要忽略locale(region)(至少在服务器端,所以我们只知道我们支持“en”和“de”,所以我们在应用程序代码、配置文件或elese中指定了它们)。所以我们不在乎用户来自美国还是英国 我们正在做的是将“en”或“de”与用户浏览器定义的语言/区域性中的可能匹配项进行匹配 我遇到的问题是如果我这样做 /* Gets

这是一个关于设置我们网站的语言和文化设置的问题,与我们从访问网站的用户那里读取的设置有关

假设我们的网站支持两种语言,英语(en)和德语(de)。我们还假设我们想要忽略locale(region)(至少在服务器端,所以我们只知道我们支持“en”和“de”,所以我们在应用程序代码、配置文件或elese中指定了它们)。所以我们不在乎用户来自美国还是英国

我们正在做的是将“en”或“de”与用户浏览器定义的语言/区域性中的可能匹配项进行匹配

我遇到的问题是如果我这样做

        /* Gets Languages from Browser */
        IList<string> BrowserLanguages = filterContext.RequestContext
            .HttpContext
            .Request
            .UserLanguages;
/*从浏览器获取语言*/
IList BrowserLanguages=filterContext.RequestContext
.HttpContext
要求
.用户语言;
我们得到各种各样的结果

我们可能会收到这样的列表

  • 恩,(比如Firefox有这个),-恩美国,-恩英国

  • 恩美国,恩英国

  • 恩,-德,-它

  • 德,恩,我们,恩

我想问的是:

  • 在这里使用比较字符串可以吗(检查“en”是否作为子字符串存在)?见样本列表2

  • 我们是要考虑订单还是你不考虑

  • 我是不是太复杂了?问题是IE和Firefox(以及其他浏览器)的区域设置字符串不同(例如,Firefox中的“sl”和IE8中的“sl SI”)


  • 我只想指导所有不使用英语的访客,以及所有其他访客使用他们的适当语言(不考虑他们的位置),你可能会认为如果我们支持葡萄牙语(pt)我们的访客来自葡萄牙和巴西,即使比赛不是100%完美,我们也会将他们重定向到网站的葡萄牙语版本(我们宁愿将他们重定向到葡萄牙语版本,而不是英语版本)。

    有趣的问题。让我试着回答

    在这里使用比较字符串可以吗(检查“en”是否作为子字符串存在)

    你可以这样做。注意,我只是提供了一种不使用字符串的方法,但是,我认为在这种情况下,子字符串方法也可以工作,因为它更简单

    CultureInfo enCulture = new CultureInfo("en"); // use "de"
    var langPref = Request.UserLanguages[0];
    var userCulture = CultureInfo.GetCultureInfo(langPref);
    var baseCulture = CultureInfo.GetCultureInfo(cult.TwoLetterISOLanguageName); // get the base culture
    var isSame = baseCulture.Equals(enCulture);
    
    使用
    标题[“接受语言”]
    怎么样。关于RFC2616的报告。使用它可能需要做更多的工作,但它似乎可以保存更多有价值的信息

    我们是要考虑订单还是你不考虑

    UserLanguages
    数组按首选项()排序。话虽如此,我假设每个浏览器都有自己特定的方式来创建语言字符串(我正在更正,但我认为FF4正在考虑删除用户代理字符串的这一部分)。您可以使用上述方法检查每种语言并确定何时找到正确的语言

    我是不是太复杂了?问题是IE和Firefox(以及其他浏览器)的区域设置字符串不同(例如,Firefox中的“sl”和IE8中的“sl SI”)

    对我来说,本地化很棘手。我建议你通读一遍,然后再读一遍


    我希望这会有所帮助。

    无论是谁投票结束了这场辩论,都根本不理解这个问题,这不是争论性的/主观的,而是寻找可能的解决方案或成员所拥有的丰富知识。这里的一些人只是点击链接,就像脑死亡机器人一样。哎哟。我认为你的问题类型属于“意识流”范畴,提问者在对问题或架构的详细描述中提出了许多问题。我的经验是,这些问题很快进入讨论模式,在此过程中,发问者的许多其他深奥要求被揭示出来。所有的答案都变成了一堆模棱两可的错误想法或建议。对不起,我冒犯了你。只是想让这里变得更好。嘿,jfar,没关系,我可以看到你对许多此类问题的担忧,但我认为这是没有理由的,因为到目前为止,这些问题都没有产生大量的答案或讨论。事实上,这个问题到目前为止只有一个答案。