我有 2 个资源文件:Resources.resx(在罗马尼亚语中有一些字符串)和Resources.en-US.resx(在英语中有相同的字符串)。
我只想更改(在下拉列表、列表框、...中)要使用的巫婆资源文件。它可能在 _Layout.cshtml 中。我不需要检测用户的文化。
问:如何从页面中选择资源文件?
编辑:可以在不更改默认 MapRoute 的情况下完成吗?
我有 2 个资源文件:Resources.resx(在罗马尼亚语中有一些字符串)和Resources.en-US.resx(在英语中有相同的字符串)。
我只想更改(在下拉列表、列表框、...中)要使用的巫婆资源文件。它可能在 _Layout.cshtml 中。我不需要检测用户的文化。
问:如何从页面中选择资源文件?
编辑:可以在不更改默认 MapRoute 的情况下完成吗?
一种方法是让下拉菜单将页面重定向到特定语言的 URL(这非常好,因为您可以发送特定语言的链接),然后在控制器的基类中设置线程的语言环境。
这篇博文更详细地介绍了我正在谈论的内容: ASP.NET MVC 中的本地化 – 3 天调查,1 天工作
检查这个博客。无需更改默认 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