7

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

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

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

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

4

2 回答 2

6

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

这篇博文更详细地介绍了我正在谈论的内容: ASP.NET MVC 中的本地化 – 3 天调查,1 天工作

于 2012-04-10T14:50:56.693 回答
4

检查这个博客。无需更改默认 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

于 2012-04-10T15:10:58.807 回答