根据ASP.NET MVC 4中的资源文件更改语言

时间:2012-04-10 14:38:13

标签: asp.net-mvc razor resources asp.net-mvc-4

我有2个资源文件: Resources.resx (罗马尼亚语中有一些字符串)和 Resources.en-US.resx (英语中的字符串相同)。

我只想更改(在下拉列表中,列表框中,...)要使用的女巫资源文件。它可以在_Layout.cshtml中。我不需要检测用户的文化。

问:如何从页面中选择资源文件?

编辑:可以在不更改默认MapRoute的情况下完成吗?

2 个答案:

答案 0 :(得分:6)

你可以做的一种方法是让下拉页面只是将页面重定向到特定于语言的URL(这是非常好的,因为你可以发送特定于语言的链接)然后在你的控制器的基类中,设置Thread的语言环境。

此博客文章更详细地介绍了我正在讨论的内容:Localization in ASP.NET MVC – 3 Days Investigation, 1 Day Job

答案 1 :(得分:4)

检查Blog。 无需更改默认MapRoute。

_Layout.cshtml页面:

@using Resources;
<!DOCTYPE html>

<html lang="en">
    <head>
        <meta charset="utf-8" />
        <title></title>
    </head>
    <body>
        <div>
            <form method="post">
                @TestResource.SelectLanguage
                <select name="lang">
                    <option></option>
                    <option value="en-GB" @(Culture == "en-GB" ? "selected=\"selected\"" : "")>English</option>
                    <option value="fr-FR" @(Culture == "fr-FR" ? "selected=\"selected\"" : "")>French</option>
                    <option value="de-DE" @(Culture == "de-DE" ? "selected=\"selected\"" : "")>German</option>
                </select>
                <input type="submit" value="@TestResource.Submit" />
            </form>
        </div>
        @RenderBody()
    </body>
</html>

文化在_PageStart.cshtml文件中设置:

@{
    Layout = "~/_Layout.cshtml";
    if(!Request["lang"].IsEmpty()){
        Culture = UICulture = Request["lang"];
    }
}

最后一页是默认页面本身:

@using Resources;
<h1>@TestResource.Welcome</h1>
<p><img src="images/@TestResource.FlagImage" /></p>

http://www.mikesdotnetting.com/Article/183/Globalization-And-Localization-With-Razor-Web-Pages