动态地从RESX文件加载多语言术语

时间:2013-02-01 10:11:12

标签: c# asp.net-mvc asp.net-mvc-3 resources multilingual

我的项目要求我提供多语言功能,因此使用Global.resx我有一个英语术语列表,在Global.fr.resx我有一个法语术语列表。这非常有效。我可以使用@ Resources.Global在我要求的术语中调用。不管。

但是,我现在需要从foreach中的RESX文件动态显示这些术语,从实体框架收集的值。有什么想法吗?

更多信息:

代码非常简单,我还在学习C#,我在View中工作,所以字面上我有@ Resources.Global。无论显示静态术语然后我有一个foreach循环:

<ul>

@foreach (var category in Model.categories)

{ <li>@category.categoryName</li> }

</ul>

我想从@ Resource.Global调用@ category.categoryName。

1 个答案:

答案 0 :(得分:1)

假设我理解正确,您希望根据动态键名称(即变量中的某些内容?)从资源文件中检索项目。你可以为此创建一个扩展方法,就像这样(显然将命名空间替换为资源文件的命名空间):

 public static string Resource(this string name)
 {
     return new ResourceManager(
             "YourApp.Namespace.Resources",
             Assembly.GetExecutingAssembly()
                .GetString(name) ?? name;
 }

然后对于foreach,你可以这样做(假设yourList是一个字符串列表):

foreach (string item in yourList)
{
    item = item.Resource();
}

甚至只是使用Linq?

List<string> resourceStrings = yourList.Select(s => s.Resource()).ToList();