Мы используем решение на основе 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 для обработки переводов, чтобы мы могли просто открыть перевод WSC вверху каждой страницы ASP и использовать метод для перевода следующим образом:
В начале каждой страницы:
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.Вначале мы допустили эту ошибку, в результате чего весь XML-файл обрабатывался, когда мы вызывали Translate.label ().
Мое решение, вероятно, означает, что вам придется узнать об использовании WSC в ASP, но один развы начнете использовать их, вы никогда не захотите возвращаться.Он полностью решает спагетти-код в ASp и обеспечивает разделение проблем и повторное использование кода.
HTH, Эрик Хоуп, это помогает