А если нет, то...
AM/PM v.3 27.01.2006 13:10
/ 27.01.2006 13:38
Используем стандартные средства Парсера.
Создаем метод типа:
@getLNG[]
^if(def $form:lng && ^form:lng.lower[] eq en){$LNG[EN]}{$LNG[RU]}
В коротом записываем значение переменной LNG. Если языков много, используем case.
Далее с этой переменной делаем что угодно:
- добавляем в качестве дополнительной части имени других переменных ($переменная$LNG, тогда получится $переменнаяRU или $переменнаяEN)
- или других методов
@методRU (вызов ^метод$LNG)
- ну и т.п.
То же касается и таблиц/полей в БД. Например, таблица articles_RU запишется как articles_$LNG. Или в общей таблице articles будет два варианта текста в полях chapter$LNG (актуально, когда полностью синхронные языковые версии).
В образуемых методах и переменных описываете, применяете или выводите все, что относится к этой языковой версии сайта.
Остается лишь в уголочке страницы повесить что-то типа
^if($LNG eq RU){русский | <A href="путь_до_этой_страницы?lng=en$доп_параметры">english</A>}{<A href="путь_до_этой_страницы?lng=ru$доп_параметры">русский</A> | english}
$доп_параметры - вычисляются отдельно и приписываются после языкового параметра.
В нужных местах по сайту для проверок текущего положения используется и form:lng.
Вообще, таким образом можно разграничить вообще всё, в том числе и элементы дизайна, плашки, иконки, картинки и т.п.
Если захочется, то конструкцию
?lng=
можно и Rewrite оформить для красоты (/ru/ или /en/).
Описано в общих чертах по мотивам работы Сергея Приходько (ака sergei), спасибо ему.