2010-02-05 4 views
2

Я работаю над добавлением функции на языке Mulit на классический сайт asp. Я пытался сделать это, используя инструкции if else, чтобы выбрать include, который я хочу загрузить. После небольшого исследования я узнал, что файлы загружаются до обработки любого кода.Как выбрать между файлами include

Как я могу обойти эту проблему и загрузить нужные файлы? Есть ли лучший способ сделать это?

Спасибо!

ответ

1

После бесчисленных часов я думаю, что я, наконец, придумал решение. Я создаю xml-файлы для каждого языка (en.xml, fr.xml) с супер простой структурой (просто элемент метки с идентификатором и значением).

Используя атрибут, который имеет аналогичное имя для метки, которую я хочу заменить, я могу выяснить, куда все должно идти, и просто вытащить значение.

+0

+1 Добавление Xml ResourceManager к классическому asp - это классное решение. – Filburt

1

Вы не можете, как вы обнаружили, динамически выбирать. Включает обработку статически перед выполнением любого скрипта.

следующее лучшее Server.Execute. Вы можете использовать логику, чтобы выбрать, какие дополнительные файлы выполнять, однако, подходит ли это вашему решению, другое дело. Что включает в себя ваши включения?

Другим подходом было бы размещение ваших «многоязычных» вариантов в некотором формате данных, таких как набор файлов CSV или XML-файлов. Затем ваш код загрузит соответствующий «языковой файл».

+0

Я попробовал метод Server.Execute со своими языковыми файлами, но это не сработало. Мои языковые файлы содержали только константы с меткой и значением метки. Я собирался простую систему шаблонов, но у меня возникли проблемы с преодолением всех этих ограничений в asp. – chobo

+0

@chobo: Итак, у вас есть набор констант, на каких языках вы поддерживаете? Все ли они в западном латинском стиле? Если нет, у вас может возникнуть другая серьезная проблема. – AnthonyWJones

+0

Вы можете использовать объект сеанса для хранения данных между вызовами на 'server.execute'. –

0

Это можно сделать - просто использовать, включают виртуальный вместо файл

редактировать

я исправлюсь - очевидно, я пытался слишком трудно забыть эти темные возрасты.

Несколько лет назад я работал над проектом, где мы создали бы «контейнерную страницу» для каждой языковой версии, а затем включили соответствующую часть констант.

A working spinoff is still running, и если вы проверите page source of this site, вы можете получить представление о том, как мы подключили страницы вместе. Некоторые из включенных скриптов, идентифицированных их тегами идентификаторов SVN, даже включали больше скриптов, и это медленно превращалось в кошмар.

Прошу прощения, я ошибался в отношении условного включения, и должно быть лучшее решение, чем упомянутое выше.

+0

Я пытаюсь включить фактические asp-файлы, содержащие константы. Я попробовал ваше решение и его ошибки и сказал мне, что мне нужно Redimm все, поэтому он все еще пытается загрузить все мои включенные не только те, которые я хочу. – chobo

+0

@chobo жаль, что вы ошиблись - Энтони прав. – Filburt

0

Я не уверен, помогает ли эта идея, но вы можете уменьшить переменные языковой строки в одном файле ASP, а затем установить переменные в отдельных функциях ASP. Затем ваши операторы if могут вызывать правильную функцию для установки переменных строки языка ASP. Вы не будете разрывать строку языка в отдельные файлы, но это может сделать то, чего вы пытаетесь достичь.

Например:

dim str1, str2 

sub SetLangX 
    str1 = "String val 1 for lang X" 
    str2 = "String val 2 for lang X" 
end sub 

sub SetLangY 
    str1 = "String val 1 for lang Y" 
    str2 = "String val 2 for lang Y" 
end sub 
Смежные вопросы