在ASP.NET中本地化图像

时间:2008-12-01 14:23:54

标签: asp.net image localization globalization

几年前,我们有一位平面设计师改造我们的网站。他的结果看起来很棒,但不幸的是,他通过网络浏览器引入了一种新的不受支持的字体。

起初我觉得,“什么!?!”......因为我们的大部分内容都是动态的,并且没有真正的方法来预先制作所有图像。还有多种语言的问题(因为我们知道西班牙语即将出现)。

无论如何,我决定创建一些类来通过GDI +自动生成图像,并根据需要以编程方式缓存它们。这解决了我们最初的大部分问题。但是,现在我们的负载急剧增加,我们的UI服务器已经消耗殆尽。

现在问题......我希望用标准的Web浏览器字体替换大多数动态GDI +图像。我想保留一些渲染的GDI +图像并将它们放在resx文件中,但是计划通过asp:Labels用Tahoma或Arial字体替换它们中的大部分。

您发现哪些是更好的本地化图像解决方案?

  • 将图像嵌入resx
  • 仅将图片网址添加到resx
  • 其他一些解决方案

我主要关注的是限制UI服务器上的处理。如果是这种情况,与将图像实际嵌入resx相比,将图像url添加到resx会​​是更好的解决方案吗?

5 个答案:

答案 0 :(得分:3)

请参阅我的回复here

这可以手动完成或使用某种自动化(CMS)系统完成。

基本方法是将图像缓存在特定于语言的目录结构中,然后编写一个HTTP处理程序,以有效地删除其他目录层。例如:

/images/
    /en/
        header1.gif
    /es/
        header1.gif

在您的标记或CSS中,您只需引用/images/header1.gif。 http hander然后使用session(如果语言是用户特定的)或config(如果特定于站点)来选择从哪个目录提供图像。

这提供了一个简洁的代码和内容,并允许客户端缓存。 Resx非常适合小字符串,但我更喜欢这样的系统用于图像和更大的内容。特别是在网络上,通常很容易切换图像。

答案 1 :(得分:3)

您只需要生成一次图像,然后将其保存在硬盘上。您网站上的负载不应增加您必须执行的处理量。话虽这么说,但几乎听起来你正在使用图像来做你不应该做的事情。如果有太多不同的图像无法跟上生成它们的时间,那么就应该放弃你不喜欢图像的花哨图像,然后再回到直文。如果用户没有安装指定的字体,它应该回退到类似的字体。 CSS对此有很好的支持。

答案 2 :(得分:1)

几年前我遇到了同样的问题,我们的界面团队向我们指出了SIFr。 http://wiki.novemberborn.net/sifr/

您将字体嵌入Flash影片中,然后使用SIFr JavaScript将文本动态转换为字体。因为它是客户端,所以没有服务器端的影响。

如果用户未安装Flash或JavaScript,则会获得最接近网络友好的字体。

作为一个额外的好处:因为你的内容仍然是文本 - 谷歌可以搜索和索引内容 - 一个巨大的SEO优化。

答案 3 :(得分:0)

由于缓存,我宁愿只将图片网址添加到resx中。静态内容(i-e普通文件)的缓存要比生成的内容好得多。

答案 4 :(得分:0)

我对非常谨慎地将文本放入图像中,具有适当字体系列回退的CSS可能是对可访问性和良好MVC理由的正确响应。

如果确实需要代,我认为 Kiblee JayArr 概述了良好的解决方案