代码之家  ›  专栏  ›  技术社区  ›  Elijah Manor

在ASP.NET中本地化图像。导航战鉴定小组

  •  7
  • Elijah Manor  · 技术社区  · 17 年前

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

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

    不管怎样,我决定创建一些类,通过GDI+自动生成图像,并根据需要进行编程缓存。这解决了我们最初的大部分问题。然而,现在我们的负载急剧增加,我们的UI服务器出现了消耗。

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

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

    • 将图像嵌入到resx中
    • 仅将图像url添加到resx中
    • 其他解决方案

    我主要关心的是限制UI服务器上的处理。如果是这样的话,与实际将图像嵌入到resx中相比,将图像url添加到resx是否是一个更好的解决方案?

    5 回复  |  直到 17 年前
        1
  •  3
  •   Community Mohan Dere    9 年前

    您应该只需要生成一次每个图像,然后将其保存在硬盘上。你网站上的负载不应该增加你必须做的处理量。话虽如此,听起来你几乎是在用图像来做不应该做的事情。如果有太多不同的图像,你无法跟上生成它们的速度,那么是时候放弃你花哨的图像,去做不应该是图像的事情,回到纯文本了。如果用户没有安装指定的字体,它应该回退到外观相似的字体。CSS对此有很好的支持。

        2
  •  3
  •   Kibbee    17 年前

    查看我的回复 here

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

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

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

    在你的标记或CSS中,你只需要引用/images/header1.gif。然后,http处理程序使用会话(如果语言特定于用户)或配置(如果特定于站点)来选择从哪个目录提供图像。

    这在代码和内容之间提供了一条清晰的线,并允许客户端缓存。Resx非常适合小字符串,但我更喜欢这样的系统来处理图像和较大的内容。尤其是在网络上,通常很容易切换图像。

        3
  •  1
  •   bryanbcook    17 年前

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

    您将字体嵌入到Flash电影中,然后使用SIFr JavaScript将文本动态转换为字体。因为它是客户端,所以不会对服务器端产生影响。

    如果用户没有安装Flash或JavaScript,他们将获得最接近的网络友好字体。

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

        4
  •  0
  •   Johan Buret    17 年前

    由于缓存,我宁愿只将图像url添加到resx中。缓存对于静态内容(即纯文件)比对于生成的内容要好得多。

        5
  •  0
  •   annakata    17 年前

    我会的 非常 对于在图像中放置文本持谨慎态度,具有适当字体家族回退的CSS可能是对可访问性和良好MVC基础的正确回应。

    我认为真正需要一代人的地方 Kiblee 杰亚尔 概述好的解决方案

    推荐文章