2008-11-25 85 views
1

在我的asp.net应用程序中,用户可以上传几个本地化图像(按钮)。例如,他会上传'send.gif','send.fr.gif','send.en-UK,gif;查找本地化文件

当访问者来到他的页面时,我需要根据访问者的语言环境提取正确的文件。

是否有api(或简单的方法)根据语言环境找到最合适的图像 - 例如,如果访问者来自法国,API将返回'send.fr.gif',如果访问者来自澳大利亚API将返回'send.en.gif'等...

逻辑应该与ASP.NET基本上选取合适的本地化资源文件相同。

谢谢。

回答

1

从您的帖子看来,您已经有办法检测用户区域设置。所以我会假设你持有这些信息。

我们这样做的方式是将用户区域设置存储在会话中,并将所有本地化资源存储在相应的目录名称中。例如:

/ 
    /images 
     sendButton.gif 
     background.gif 
     /de-de/ 
      sendButton.gif 
     /fr-fr/ 
      sendButton.gif 

一个HttpHandler然后使用本地化目录在默认目录的顶部,基于当前用户的语言环境映射。这允许将图像无缝集成到所有代码和css中,并且如果未找到本地化图像,将使用基本目录中的图像。

如果需要更复杂的分类,那么我会建议你的国家嵌入你的语言。像这样:

/ 
    /images 
     sendButton.gif 
     background.gif 
     /de 
      /de 
       sendButton.gif 
     /fr 
      sendButton.gif 
      /fr 
      /be 

然后,您可以指定语言级别的资源。甚至让你的http处理器映射文件以一种方式传播,而不是传播到树上。因此,fr-fr资源将用于所有没有这个名称的资源的法国拼字国家。

当然在这一点上它确实变得相当复杂,尤其是当决定哪一个法语国家被用作法语的默认语言时(如果没有指定的话)。你可能希望开始存储某个地方的优先级,以便决定你所服务的地点。资源是否在树上传播。但作为一个透明的结构来定位图像,同时保持标签和CSS清洁,这应该工作得很好。

+0

谢谢 - 但基本上我的问题是编写HttpHandler有多复杂? UI区域设置和目录之间并不总是有1-1映射。需要有一个回退机制。例如,如果有FR-FR和法国比利时(FR-BE)即将到来 - 他应该去哪里? – LeJeune 2008-11-25 13:05:04