7

2つのリソースファイルがあります:Resources.resx(ルーマニア語でいくつかの文字列があります)とResources.en-US.resx(英語で同じ文字列があります)。

使用する魔女のリソースファイルを(ドロップダウンリスト、リストボックスなどで)変更したいだけです。_Layout.cshtmlにある可能性があります。ユーザーの文化を検出する必要はありません。

Q:ページからリソースファイルを選択するにはどうすればよいですか?

編集:デフォルトのMapRouteを変更せずに実行できますか?

4

2 に答える 2

6

これを行う 1 つの方法は、ドロップダウンでページを言語固有の 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 に答える