c# - 全局化找不到合适的资源

标签 c# asp.net asp.net-mvc globalization


我正在尝试全局化 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/

相关文章:

c# - 如何发布 ajax 调用和 C# 来识别对象

c# - 客户端未收到来自 Controller 的 SignalR 消息

javascript - 使用razor动态生成DIV和CHECKBOX的唯一ID

asp.net - ASP.NET网站体系结构问题

c# - 需要有关密码算法的建议

c# - 将 int 结果 `15` 更改为 `{ "结果": 15 }`

C#密码加密

asp.net-mvc - Controller 总是从 json 仅接收指定字段的 null

c# - 在 C# 中,ToUpper() 和 ToUpperInvariant() 有什么区别?

c# - Web API 2 中的 OData 具有可嵌入的资源链接