【问题标题】:Find a localized file查找本地化文件
【发布时间】:2008-11-27 18:52:57
【问题描述】:

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

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

是否有一个 api(或简单的方法)可以根据区域设置找到最合适的图像 - 例如,如果访问者来自法国,则 API 将返回“send.fr.gif”,如果访问者来自澳大利亚API 将返回 'send.en.gif' 等...

这个逻辑应该和 ASP.NET 选择正确的本地化资源文件基本一样。

谢谢。

【问题讨论】:

    标签: asp.net localization


    【解决方案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 资源将用于所有没有自己的该名称资源的法语国家/地区。

    当然,此时它确实变得相当复杂,尤其是在决定使用哪个法语国家作为法语语言的默认值(如果未指定)时。您可能希望在某处开始存储优先级,以便决定您为哪个语言环境提供服务。以及资源是向上还是向下传播。但作为一种用于本地化图像的透明结构,同时保持 yoru 标记和 CSS 干净,这应该会很好地工作。

    【讨论】:

    • 谢谢 - 但基本上我的问题是编写 HttpHandler 有多复杂? UI 语言环境和目录之间并不总是存在 1-1 映射。需要有一个后备机制。例如,如果有一个 fr-FR,而一个法国比利时 (fr-BE) 即将到来——他应该去哪里?
    • 我已通过编辑帖子对此作出回应。不幸的是,如果您的需求如此复杂,我想您将不得不在语言环境之间存储加权映射。从标记和 CSS 的角度来看,我仍然认为将所选资源映射到标准目录是最好的。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-06-10
    • 1970-01-01
    • 2021-08-22
    • 1970-01-01
    相关资源
    最近更新 更多