Forum Webscript.Ru

Программирование => Perl => Тема начата: Hatchet от 09 Ноября 2003, 13:56:39

Название: Templates
Отправлено: Hatchet от 09 Ноября 2003, 13:56:39
Стоит задача: сайт на двух языках русский и английский...

Я подумал - нафиг делать по два варианта файлов .tmpl и описал все строки в виде ключ=значение в файлах
language_rus и _eng.pl...

Но получается, что я передаю в шаблон избыточное колличество значений - т.е в одном шаблоне есть поле Имя... а в другом нет. Если поле не описано при передаче данных в ->param то оно игнорируется... а если наоборот-  можно ли научить скрипт пропустить ключ=значение при заполнении шаблона?

Кажись сформулировал доходчиво :)
Название: Templates
Отправлено: Phoinix от 09 Ноября 2003, 16:39:50
Hatchet
Я у себя делаю так:
языковые файлы russian.lng и english.lng пишу в виде:

$txt[0] = "текст 1";
$txt[1] = "текст 2";
...
$txt[n] = "текст n";

соответственно $txt[0] русского файла соответствует $txt[0] английского

в шаблоне вместо всего текста подставляю %txt0%, %txt1%, ... %txtn%

Потом в скрипте, в зависимости от выбранного языка подгружаю соответствующий lng, а в шаблон произвожу замену %txt0% -> $txt[0] и вывожу на экран:

@temp - твой шаблон...

foreach $line (@temp) {
    $line =~s /%txt([0-9]*)%/$txt[$1]/gi;
}
print "Content-type: text/html; charset=windows-1251\\n\\n";
print qq "@temp";
Название: Templates
Отправлено: ondr от 10 Ноября 2003, 10:31:26
Hatchet
(IMHO) Лучше сделай два варианта шаблонов. А еще лучше два варианта сайта, на разных языках.