Forum Webscript.Ru
Программирование => Perl => Тема начата: Hatchet от 09 Ноября 2003, 13:56:39
-
Стоит задача: сайт на двух языках русский и английский...
Я подумал - нафиг делать по два варианта файлов .tmpl и описал все строки в виде ключ=значение в файлах
language_rus и _eng.pl...
Но получается, что я передаю в шаблон избыточное колличество значений - т.е в одном шаблоне есть поле Имя... а в другом нет. Если поле не описано при передаче данных в ->param то оно игнорируется... а если наоборот- можно ли научить скрипт пропустить ключ=значение при заполнении шаблона?
Кажись сформулировал доходчиво :)
-
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";
-
Hatchet
(IMHO) Лучше сделай два варианта шаблонов. А еще лучше два варианта сайта, на разных языках.