Перевод через trt(

This commit is contained in:
2020-08-17 07:20:11 +06:00
parent 643b6850df
commit d8ee87bd40
3 changed files with 116 additions and 31 deletions

View File

@ -153,6 +153,8 @@
} }
//Функция для перевода текста без применения GetText //Функция для перевода текста без применения GetText
/*
закоментил так как есть в tools.php
function trt($text) function trt($text)
{ {
global $db,$lng,$Schema; global $db,$lng,$Schema;
@ -182,12 +184,13 @@
$result=str_replace("_", " ", $text); $result=str_replace("_", " ", $text);
} }
return $result; return $result;
} }*/
//Перевод для строки в которой встречаются подстроки вида: trt('') //Перевод для строки в которой встречаются подстроки вида: trt('')
function parseGT($text) function parseGT($text)
{ {
$result=''; $result='';
$pLen=4; //Длина преамбулы trt(
$cut=0; $cut=0;
$from = 0; // Позиция поиска для итерации $from = 0; // Позиция поиска для итерации
while (true) while (true)
@ -195,16 +198,17 @@
$pos1 = strpos($text, 'trt(', $from); $pos1 = strpos($text, 'trt(', $from);
if($pos1 !== false) if($pos1 !== false)
{ {
$from = $pos1+3; $from = $pos1+$pLen+1;
$pos2 = false; $pos2 = false;
if($text[$pos1+2] == '"') $pos2 = strpos($text, '")', $from); if($text[$pos1+$pLen] == '"') $pos2 = strpos($text, '")', $from);
if($text[$pos1+2] == '\'') $pos2 = strpos($text, '\')', $from); if($text[$pos1+$pLen] == '\'') $pos2 = strpos($text, '\')', $from);
if($pos2 !== false) if($pos2 !== false)
{ {
$result.=substr($text, $cut, $pos1 - $cut ); $result.=substr($text, $cut, $pos1 - $cut );
$result.=trt(substr($text, $pos1+3, $pos2 - $pos1 - 3 )); $toTranslate=substr($text, $pos1+$pLen+1, $pos2 - $pos1 - $pLen-1 );
$result.=trt($toTranslate);
$cut=$pos2+2; $cut=$pos2+2;
$from = $pos2 + 2; $from = $pos2 + $pLen;
} }
}else break; }else break;
} }

View File

@ -1,4 +1,24 @@
//Copyright (C) Ivanov I.M. irigm@mail.ru /*jshint esversion: 6 */
"use strict";
//Массив g_translations подгружается отдельно
function trt(key)
{
if(key==null || key===undefined) return '';
let val=g_translations[key];
if(val==null || val===undefined)
{
for(let item in g_translations) {
if(item.toLowerCase()==key.toLowerCase())
{
val=g_translations[item];
break;
}
}
}
if(val==null || val===undefined) return key.replace(/_/g, ' ');
else return val;
}
//Расширить плитку чтобы она занимала всю штртну области //Расширить плитку чтобы она занимала всю штртну области
function resizeDivTile(parent,minWidth) function resizeDivTile(parent,minWidth)
@ -529,15 +549,13 @@ function setIframeSrc(iframeNode, src)
// браузер хранится в объекте browser // браузер хранится в объекте browser
function createIFrame(fname, fsrc, parent, debug) function createIFrame(fname, fsrc, parent, debug)
{ {
var ifrstr = BrowserDetect.browser=='Explorer' ? '<iframe name="'+fname+'" src="'+src+'">' : 'iframe'; let ifrstr = BrowserDetect.browser=='Explorer' ? '<iframe name="'+fname+'" src="'+src+'">' : 'iframe';
var cframe = document.createElement(ifrstr); let cframe = document.createElement(ifrstr);
with(cframe){ cframe.name = fname // это не для IE
name = fname // это не для IE cframe.setAttribute("name", fname) // и это тоже, но вреда не будет
setAttribute("name", fname) // и это тоже, но вреда не будет cframe.id = fname // а это везде ок
id = fname // а это везде ок cframe.src = fsrc //Так ка setIframeSrc глючит если не задан родитель
src = fsrc //Так ка setIframeSrc глючит если не задан родитель
}
// можно добавлять сразу к document.body // можно добавлять сразу к document.body
//document.body.appendChild(cframe); //document.body.appendChild(cframe);
@ -558,27 +576,25 @@ function createIFrame(fname, fsrc, parent, debug)
// прячем фрейм // прячем фрейм
function hideIframe(iframeNode) function hideIframe(iframeNode)
{ {
with(iframeNode.style) {
if(BrowserDetect.browser!='Safari'){ if(BrowserDetect.browser!='Safari'){
position = "absolute"; iframeNode.style.position = "absolute";
}
left = top = "0px";
height = width = "1px";
visibility = "hidden";
} }
iframeNode.style.left = "0px";
iframeNode.style.height = "1px";
iframeNode.style.visibility = "hidden";
} }
//вернуть строку до заданных символов //вернуть строку до заданных символов
function BeforeFirst(str,sub) function BeforeFirst(str,sub)
{ {
var pos=str.indexOf(sub); let pos=str.indexOf(sub);
if (pos==-1) return null; if (pos==-1) return null;
return str.substring(0, pos); return str.substring(0, pos);
} }
//вернуть строку до последнего найденого символа //вернуть строку до последнего найденого символа
function BeforeLast(str,sub) function BeforeLast(str,sub)
{ {
var pos=str.lastIndexOf(sub); let pos=str.lastIndexOf(sub);
if (pos==-1) return null; if (pos==-1) return null;
return str.substring(0, pos); return str.substring(0, pos);
} }
@ -586,14 +602,14 @@ function BeforeLast(str,sub)
//вернуть строку после заданных символов //вернуть строку после заданных символов
function AfterFirst(str,sub) function AfterFirst(str,sub)
{ {
var pos=str.indexOf(sub); let pos=str.indexOf(sub);
if (pos==-1) return null; if (pos==-1) return null;
return str.substring(pos+sub.length, str.length); return str.substring(pos+sub.length, str.length);
} }
function AfterLast(str,sub) function AfterLast(str,sub)
{ {
var pos=str.lastIndexOf(sub); let pos=str.lastIndexOf(sub);
if (pos==-1) return null; if (pos==-1) return null;
return str.substring(pos+sub.length, str.length); return str.substring(pos+sub.length, str.length);
} }
@ -601,9 +617,9 @@ function AfterLast(str,sub)
//взять параметры из строки запроса (раздел по ? и &) //взять параметры из строки запроса (раздел по ? и &)
function getParam(sParamName,win) function getParam(sParamName,win)
{ {
var Params = win.location.search.substring(1).split("&"); // отсекаем «?» и вносим переменные и их значения в массив let Params = win.location.search.substring(1).split("&"); // отсекаем «?» и вносим переменные и их значения в массив
var variable = ""; let variable = "";
for (var i = 0; i < Params.length; i++) for (let i = 0; i < Params.length; i++)
{ {
if (Params[i].split("=")[0] == sParamName) if (Params[i].split("=")[0] == sParamName)
{ {
@ -870,7 +886,7 @@ function delChild(obj)
{ {
while(true) while(true)
{ {
c=obj.firstChild; let c=obj.firstChild;
if(c!=null) obj.removeChild(c); else break; if(c!=null) obj.removeChild(c); else break;
} }
} }
@ -1574,7 +1590,7 @@ class TSettings
{ delete(this.mas[id]); { delete(this.mas[id]);
}; };
} }
Settings=new TSettings(); var Settings=new TSettings();
function isInt(value) function isInt(value)

View File

@ -1,5 +1,70 @@
<?php <?php
// Из файла file.js делаем file_v123456789.js добавив время
function getScript($path)
{
if (file_exists($_SERVER['DOCUMENT_ROOT'].$path))
{
return '<script type="text/javascript" src="'.beforeLast($path,'.').'_v'.filectime($_SERVER['DOCUMENT_ROOT'].$path).'.'.afterLast($path,'.').'"></script>'."\n";
}
return '';
}
//Функция для перевода текста без применения GetText
function trt($text)
{
global $db;
$result='';
$sql='select translation from main._translations where del=false and language_id=(select id from main._languages where short_name=\''.$_SESSION["LNG"].'\') and identifier=\''.$text.'\';';
$res = NULL;
try
{
$res = $db->query($sql);
}catch (Exception $e)
{
echo $e->getMessage();
}
if($res!=NULL && $res->rowCount()>0)
{
while ($row = $res->fetch(PDO::FETCH_NUM))
{
$result=$row[0];
}
}else
{
$result=str_replace("_", " ", $text);
}
return $result;
}
//Получить разрешения для текущего пользователя
function getAccess($key)
{
global $db;
$result=false;
if(isset($_SESSION['USER_ID']))
$sql="select main.p_getaccess(".$_SESSION['USER_ID'].",'".$key."') as acc;";
else
$sql="select main.p_getaccess(0,'".$key."') as acc;";
try
{
$res = $db->query($sql);
}catch (Exception $e)
{
echo $e->getMessage();
}
if($res!=NULL && $res->rowCount()>0)
{
while ($row = $res->fetch(PDO::FETCH_NUM))
{
$result=$row[0];
}
}
return $result;
}
function delPHPExt($fName) function delPHPExt($fName)
{ {
$pos = strrpos($fName, '.')+1; $pos = strrpos($fName, '.')+1;