Функция cot_translit_decode выполняет обратную операцию транслитерации, преобразуя строку, транслитерированную ранее с помощью cot_translit_encode, в исходный вид, используя правила, определенные для текущего языка.
Код функции:
function cot_translit_decode($str)
{
global $lang, $cot_translitb;
static $lang_loaded = false;
// Проверка: если язык не английский и файл с обратной транслитерацией для текущего языка существует
if (!$lang_loaded && $lang != 'en' && file_exists(cot_langfile('translit', 'core')))
{
// Подключение файла с обратной транслитерацией для текущего языка
require_once cot_langfile('translit', 'core');
$lang_loaded = true;
}
// Если массив обратной транслитерации существует, применяем его
if (is_array($cot_translitb))
{
$str = strtr($str, $cot_translitb); // Преобразование строки с помощью обратной транслитерации
}
return $str; // Возвращаем результат
}
Пояснение:
Глобальные переменные:
$lang — текущий язык сайта.
$cot_translitb — массив, содержащий правила обратной транслитерации для текущего языка. Это массив вида ['заменяющий_символ' => 'символ_для_замены'].
Переменная $lang_loaded:
Статическая переменная, которая отслеживает, был ли уже загружен файл с обратной транслитерацией, чтобы не загружать его повторно.
Проверка и загрузка файла с обратной транслитерацией:
Если транслитерация для текущего языка еще не загружена (переменная $lang_loaded равна false), а текущий язык не является английским ($lang != 'en'), функция пытается загрузить файл с обратной транслитерацией, если он существует.
Файл с обратной транслитерацией должен быть расположен в директории для языков в формате translit.php.
Для этого используется функция cot_langfile('translit', 'core'), которая возвращает путь к файлу для текущего языка.
Преобразование строки:
Если массив $cot_translitb существует (то есть файл с обратной транслитерацией был успешно загружен), применяется функция strtr($str, $cot_translitb), которая заменяет символы в строке $str по правилам, описанным в массиве $cot_translitb.
Возврат результата:
Функция возвращает строку с выполненной обратной транслитерацией (если она была применена).
Пример использования:
Если для русского языка существует файл с обратной транслитерацией, в котором массив $cot_translitb выглядит,
например, так:
$cot_translitb = [
'ya' => 'я',
'yu' => 'ю',
'sh' => 'ш',
// ... другие правила
];
Тогда вызов функции:
echo cot_translit_decode('Primer teksta');
Вернет строку:
Пример текста
Резюме:
Функция cot_translit_decode используется для восстановления исходной строки из транслитерированного текста, применяя обратную транслитерацию. Она полезна, например, при преобразовании ранее транслитерированных строк в читаемый вид на языке оригинала.