类库项目中特定于语言的资源文件的问题

时间:2010-02-06 12:47:16

标签: .net localization asp.net-mvc-2

我正在开发一个ASP.NET MVC 2应用程序,并为我的模型使用一个单独的类库。我在我的类库项目中使用了资源文件来嵌入验证消息并在我的元数据类中使用它,一切都很好,直到我决定在我的项目中添加一种新语言,所以我将Resource.resx重命名为Resource.en-US.resx并且还将其复制并保存为另一种语言的新Resource.fa-IR.resx,但在重命名后,Designer.cs配套文件中的所有内容都已消失,我无法再访问资源文件。一旦我从文件名中删除了语言名称(例如en-US),它就能正常工作。

我已将Access Modifier设置为Public但没有结果。

我正在使用Visual Studio 2008 SP1。

2 个答案:

答案 0 :(得分:6)

不要重命名resources.resx:只需为您需要的其他文化添加资源文件。

Resources.resx包含“中性”资源,这些资源将被编译到主程序集中,如果找不到所需文化的附属程序集,则将其用作后备资源。

每个附加资源文件,例如Resource.fa-IR.resx通常会编译成特定于文化的附属程序集。

您还可以向AssemblyInfo.cs添加NeutralResourcesLanguageAttribute,它会向ResourceManager通知您用于中立资源的语言:

assembly: [System.Resources.NeutralResourcesLanguage("en-US")]

答案 1 :(得分:2)

您无需将默认语言重命名为Resources.en-us.resx。只需将其保存为Resources.resx,它将用作后备资源文件,这意味着如果没有特定于用户的语言,例如阿拉伯语,它将被使用,因此,您应该具有以下命名的文件:

Resource.resx

Resource.fa-IR.resx