我正在尝试全局化 mvc 应用程序(法语和英语),这就是我所做的:
1)创建App_LocalResources文件夹并添加2个文件:
- Resources.resx(将包含法语)和
- Resources.en.resx(将包含英语)。
然后,我在每个文件中添加了一个具有相同名称的资源(仅用于测试),并将访问修饰符修改为 Public(对于每个文件)
2)在global.asax中指定法国文化
protected void Session_Start()
{
string userLanguage = Request.UserLanguages[0];
string cultureName = CultureHelper.GetImplementedCulture(userLanguage);
Thread.CurrentThread.CurrentCulture = new System.Globalization.CultureInfo(cultureName);
Thread.CurrentThread.CurrentUICulture = Thread.CurrentThread.CurrentCulture;
HRP.App_LocalResources.Resources.Culture = Thread.CurrentThread.CurrentCulture;
}
CultureHelper是我在网上找到的一个助手,它确定文化的正确名称(感谢作者):http://pastebin.com/JkhjJg4N
3)添加了一个测试字符串以显示在我的 View 中:
<p><span class="Title">@HRP.App_LocalResources.Resources.EmployeesTitle</span></p>
异常(exception)是:
[MissingManifestResourceException: Could not find any resources appropriate for the specified culture or the neutral culture. Make sure "HRP.App_LocalResources.Resources.resources" was correctly embedded or linked into assembly "HRP" at compile time, or that all the satellite assemblies required are loadable and fully signed.]
请帮忙。
最佳答案
多亏了 friend 的提示,我解决了这个问题: 问题是 .resx 文件是作为内容构建的,所以我需要做的就是:
右键单击您的资源文件 -> 属性 -> 将“构建操作”属性从“内容”更改为“嵌入资源”
关于c# - 全局化找不到合适的资源,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31964177/