Добрый день. Сейчас я перевожу интерфейс на "лету" с помощью API яндекс переводчика. Переведённый шаблон сохраняю в директирии в которой хранятся все шаблоны для данной локализации
function TemplateCompile($str) {
global $langs;
preg_match_all("|\@@([^)]+?)\@@|", $str, $arr);
foreach ($arr[1] as $row) {
$str = str_replace("@@" . $row . "@@", file_get_contents('app/storage/template/include/' . $row . '.html'), $str);
}
preg_match_all("|\{{([^)]+?)\}}|", $str, $arro);
foreach ($arro[1] as $row) {
//тут перевожу
$translete TransleteYandexApi($row);
$str = str_replace("{{" . $row . "}}", $translete $str);
}
$reg_lang = '';
foreach ($langs as $key => $value) {
$reg_lang .='|' . $key;
}
$str = preg_replace("~href='(?!/(?:af$reg_lang)/)([^']+)~", "href='/$lang.$1", $str);
//Оптимизирует шаблон
$search = array('/\>[^\S ]+/s', '/[^\S ]+\</s', '/(\s)+/s');
$replace = array('>', '<', '\\1');
$str = preg_replace($search, $replace, $str);
return $str;
}
function TemplateGet($template, $lang = 'ru',$array = 'null') {
if (!@include'app/storage/template_compile/' . $lang . '/' . $template . '.html') {
if (file_exists('app/storage/template_compile/' . $lang)) {
echo '*';
$temp = TemplateCompile(file_get_contents('app/storage/template/' . $template . '.html'));
$f = fopen('app/storage/template_compile/' . $lang . '/' . $template . '.html', 'w');
flock($f, LOCK_EX);
fwrite($f, $temp);
flock($f, LOCK_UN);
fclose($f);
include 'app/storage/template_compile/' . $lang . '/' . $template . '.html';
} else {
mkdir('app/storage/template_compile/' . $lang);
$temp = TemplateCompile(file_get_contents('app/storage/template/' . $template . '.html'));
$f = fopen('app/storage/template_compile/' . $lang . '/' . $template . '.html', 'w');
flock($f, LOCK_EX);
fwrite($f, $temp);
flock($f, LOCK_UN);
fclose($f);
include 'app/storage/template_compile/' . $lang . '/' . $template . '.html';
}
}
}
В итоге я имею файлик с версткой и переведённым интерфейсом только вот не могу понять как реализовать улучшение перевод без кучи запросов к бд или файловой системе. Зарание спасибо