【发布时间】:2015-08-12 11:40:17
【问题描述】:
我正在尝试全球化一个 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) 添加了一个测试字符串显示在我的视图中:
<p><span class="Title">@HRP.App_LocalResources.Resources.EmployeesTitle</span></p>
例外是:
[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.]
请帮忙。
【问题讨论】:
-
userLanguage 是法语吗?尝试添加 Resource.fr.resx 看看它是否有效。
-
我自己试了一下,效果很好。您是否检查了 CultureHelper 类中的
List<string> _cultures属性以包含您提供的那些文化? -
@HariHaraChandan 我添加了 Resource.fr.resx,它是一样的。
-
@PilgerstorferFranz CultureHelper 包含我需要的文化。
-
您是否将 buildAction 更改为 embedded ressource 并在资源文件上使用了自定义工具 PublicResXFileCodeGenerator?
标签: c# asp.net asp.net-mvc globalization