我之前从未尝试在MVC项目中使用resx文件,所以我现在对此感兴趣,因为我的网站需要3种语言,全球英语和两种丹麦语和西班牙语。所以我觉得这很容易做我只做我以前做的事我会制作自己的xml文件,并要求浏览器根据用户请求在它们之间切换,并始终首先加载全局语言。
然后我读到了resx以及ASP.Net MVC如何根据用户语言选择丹麦语或西班牙语作为默认语言,如果用户不使用任何这些语言,则总是返回英语。这让我开始阅读如何全球化国际化和本地化我的网站。
然而,现在我的问题出现了,我觉得我错过了什么。我知道如何创建resx文件并在我自己选择的文件夹或app_GlobalResources或其中一个文件夹中找到它们,我似乎无法让它在我读到的任何地方工作感觉像是如何重要的如何链接resx文件在一起并在剃刀视图中使用它们丢失了。我发现很多地方只是说写:@Resources.myString
并且不知何故它会知道要采用哪些资源,但问题是intellisense不能将我的resx文件识别为Resources.mystring,也不接受它作为可编译的构建。总之,我无法找到或建立从resx文件到Razor2视图页面或我的代码中的任何其他地方的链接,所以请有人解释或链接教程的傻瓜因为我显然不明白为什么它必须非常难以使用简单的东西。
感谢您阅读我的所有文字,我不擅长用英语用短句来表达自己,所以如果我让任何人对我的实际问题感到困惑,我很抱歉。
答案 0 :(得分:2)
据我所知,有多种方法可以在MVC中使用resx文件。我们决定给它们所有命名空间并将它们复制到Resources目录中,然后使用与MVC Views相同的路径。这是这样的,并确保根据我的图片设置resx文件属性:
然后你可以访问这样的资源:
<h1>@ViewResources.Creation.Index.Headline</h1>
您可以更改默认语言:只需确保将hte languageCode存储在某处或从网址获取。我个人建议将语言代码添加到网址。 例如:www.supertext.ch/en。如果您转到页面底部,则会显示语言链接。
protected void Application_BeginRequest(object sender, EventArgs e)
{
//Dateformats, etc. (not the language)
Thread.CurrentThread.CurrentCulture = CultureInfo.CreateSpecificCulture(languageCode);
//Language
Thread.CurrentThread.CurrentUICulture = CultureInfo.CreateSpecificCulture(languageCodeUI);
}