涉及动态内容时从字符串资源转换?

时间:2012-01-17 20:39:39

标签: c# asp.net-mvc

我最近想出了如何使用包含字符串的资源文件在MVC中进行本地化。有点酷,MVC自动为访问者的语言选择资源文件。我喜欢!

但是,我通常如何处理将以下消息转换为资源文件的使用?

<p>You have @ViewBag.UnreadCount unread e-mails in your inbox</p>

如您所见,ViewBag.UnreadCount是一个需要包含的动态变量。

我该怎么办?

3 个答案:

答案 0 :(得分:3)

您可以使用custom helpers获取参数并在资源文件中使用占位符,这些占位符将替换为动态值:

<p>@Html.Resource("ResourceName", ViewBag.UnreadCount)</p>

P.S。我希望您在此处显示的此ViewBag仅用于说明目的,并且在您的实际应用中,您使用的是强类型视图模型。

答案 1 :(得分:3)

我只使用string.Format和我的资源文件。

我没有尝试过使用MVC,但它仍然可以使用

@(string.Format(YourResourceFile.Resource, ViewBag.UnreadCount))

并在您的资源文件中

You have {0} unread e-mails in your inbox

不完全是最直观的方法,但它可以很好地完成工作。我将只使用资源文件中的注释字段向翻译器解释参数将是什么。

答案 2 :(得分:1)

执行此操作的最佳方法是使用string.Format(Resource.UnreadCount ,ViewBag.UnreadCount),资源字符串将类似于&#34;有{0}个未读计数&#34;。

有关于localization

的博客更多信息

编辑:上面链接的博客属于此答案的作者。