Как выбрать между включаемыми файлами - PullRequest
2 голосов
/ 06 февраля 2010

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

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

Спасибо!

Ответы [ 5 ]

1 голос
/ 09 февраля 2010

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

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

1 голос
/ 06 февраля 2010

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

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

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

0 голосов
/ 09 февраля 2010

4guysfromrolla имеет довольно хорошую статью по этому вопросу. Ссылка ниже ...

http://www.4guysfromrolla.com/ASPScripts/PrintPage.asp?REF=/webtech/022504-1.shtml

0 голосов
/ 06 февраля 2010

Я не уверен, помогает ли эта идея, но вы можете уменьшить яркость строковых переменных языка в одном файле 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
0 голосов
/ 06 февраля 2010

Это можно сделать - просто используйте virtual вместо file

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

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

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

A рабочий спин-офф все еще работает , и если вы посмотрите источник страницы этого сайта , вы можете понять, как мы соединили страницы вместе. Некоторые из включенных сценариев, идентифицируемых их тегами SVN-идентификаторов, даже включали в себя больше сценариев, и поддержание этого постепенно превращалось в кошмар.

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

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