我最近想出了如何使用包含字符串的资源文件在MVC中进行本地化。有点酷,MVC自动为访问者的语言选择资源文件。我喜欢!
但是,我通常如何处理将以下消息转换为资源文件的使用?
<p>You have @ViewBag.UnreadCount unread e-mails in your inbox</p>
如您所见,ViewBag.UnreadCount是一个需要包含的动态变量。
我该怎么办?
答案 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
的博客更多信息编辑:上面链接的博客属于此答案的作者。