加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > asp.Net > 正文

asp-classic – 对经典ASP的多语言支持

发布时间:2020-12-16 09:23:07 所属栏目:asp.Net 来源:网络整理
导读:我有一位客户今天早上打电话给我,要求改造网站以获得多语言支持.该站点是一个经典ASP应用程序,客户端没有重写的愿望/预算是ASP.NET(或其他任何…). 我们谈到了这方面的困难,但很多文本恰好是从数据库中读取的短字符串,他很乐意能够翻译这个文本. 如果这不是
我有一位客户今天早上打电话给我,要求改造网站以获得多语言支持.该站点是一个经典ASP应用程序,客户端没有重写的愿望/预算是ASP.NET(或其他任何…).

我们谈到了这方面的困难,但很多文本恰好是从数据库中读取的短字符串,他很乐意能够翻译这个文本.

如果这不是经典ASP,我会使用基于GNU gettext()的解决方案.但是,我还没能找到Classic ASP的等价物.

我可以在他的数据库中添加一个表来存储字符串翻译,然后只是查询它,但这也意味着创建一个管理界面,这样他就可以编辑字符串(而不仅仅是编辑纯文本文件).

我也可以创建自己的flatfile解决方案,可能是基于Scripting.Dictionary,但我真的不想在这里自己动手.

这里有替代解决方案吗?谢谢.

解决方法

我们使用基于 XML的解决方案,我们有 XML文件,结构如下:

<?xml version="1.0" encoding="Windows-1252"?>
<resource>
    <language LCID="1043" name="nederlands">
        <label id="pageheader"><![CDATA[Over deze applicatie]]></label>
        <label id="warning"><![CDATA[]]></label>
    </language>
    <language LCID="2067" name="vlaams">
        <label id="pageheader">Over deze applicatie</label>
        <label id="warning"><![CDATA[]]></label>
    </language>
    <language LCID="2057" name="english (uk)">
        <label id="pageheader"><![CDATA[About this software]]></label>
        <label id="warning"><![CDATA[]]></label>
        <label id=""><![CDATA[]]></label>
    </language>
</resource>

我们选择让每个目录都有自己的XML文件,但如果您的站点中没有很多翻译,则根目录中可能有一个大的XML.这会影响你的表现.
我们写了一个WSC来处理翻译,所以我们可以在每个ASP页面的顶部打开一个翻译WSC,并使用一个方法进行翻译:

在每页的开头:

dim translate
set translate = GetObject("script:"&Server.MapPath("/~components/DLL/Translation.wsc"))
call translate.OpenWithLCID(session.LCID)

在HTML中:

<%= translate.label("systemerror") %>

在页面的末尾:

call translate.close()
set translate = nothing

对性能的影响微乎其微;只需确保在函数中获取转换,退出循环并在找到相应的XML节点后立即返回值.我们在开始时犯了这个错误,导致在我们调用Translate.label()时处理完整的XML文件.

我的解决方案可能意味着您必须了解在ASP中使用WSC,但是一旦开始使用它们,您将永远不想回头.它完全解决了ASp中的意大利面条代码,可以分离关注点和代码重用.

HTH,埃里克希望这可以帮助

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读