我一直在使用.resx
文件在我的MVC3应用程序中定位文本非常愉快一段时间现在跟随这些instructions,但现在已经达到了我需要进行图像本地化的程度同样。
VS2010中的.resx
编辑器可以让您轻松地将图像作为资源添加,它只是将其转储到与.resx
文件相同的目录中名为Resources的文件夹中,我可以参考通过调用@ResXfileName.ResourceName
,我的视图中的图像与字符串相同,但是返回一个System.Drawing.BitMap
对象,我希望它只会给我图像的路径,所以我可以把它推到上午图像标签src属性,但我无法弄清楚如何获取路径!
答案 0 :(得分:5)
最好(也是最简单)的方法是添加一个返回区域设置名称(或LCID)的新HtmlHelper
扩展方法,然后您可以将其用于任何事情(图像,脚本等)。最好的方法当然是在这种文件夹结构中包含本地化文件:
/images
/en-US
image1.png
/en-GB
image1.png
/es-ES
image1.png
这就是你如何使用它:
<img src="/images/@Html.Locale/backgrounds/back.png" />
这是此类扩展方法的一个示例。
public MvcHtmlString Locale(this HtmlHelper helper)
{
// in case you're setting UI culture
return MvcHtmlString.Create(System.Threading.Thread.CurrentThread.CurrentUICulture.Name);
}
如果这种简化在您的情况下不起作用并且您需要特定的图像调用,那么创建一个名为UrlHelper
或Image
的{{1}}方法,您可以在其中提供服务器应用程序相对路径使用您的区域设置名称或LCID替换的一些令牌。
您还可以将图像路径放在资源文件中,并在视图中使用这些值,为图像(或其他文件)提供正确的路径。
File
然后在您的视图中将其用作:
public MvcHtmlString Resource(this UrlHelper helper, string classKey string resourceKey)
{
return MvcHtmlString.Create(helper.ViewContext.HttpContext.GetGlobalResourceObject(classKey, resourceKey));
}