Работа с текстами

В первую очередь подразумевается работа с русскими текстами, т.к. все базовые преобразования и фильтры в том числа и текстовые хранятся в классе input. Здесь же - находится все, что касается нелегкой морфологической, зачастую интеллектуальной части русского языка

Особенность класса - в необходимости существования версии для каждой кодировки. Но вам об этом не нужно задумываться, т.к. это дело рук ядра фрейворка. Стоит лишь озаботится, если вы используете кодировку отличную от UTF-8 и Windows-1251

Транслит

Транслит - это перевод русских букв в английские с сохранением произношения. Такие функции часто используют для создания грамотного ЧПУ, или ФИО для документов. Все, что не произносится - превращается в тире -

c\translate::translit($text);

Для полноценных возможностей, если вы хотите использовать у себя URL с латиницей - существует вспомогательная функция, которая пропускает русские символы. Но следует помнить, что с кирилицей следует быть осторожным, особенно уделить внимание кодировке проекта

c\translate::rusUrl($text);

Преобразование раскладки клавиатуры

Данные функции могут помочь пользователю подсказать правильный вариант, если он ввел значение на неправильной раскладке клавиатуры. Вы можете выводить подсказку, если функция считает, что правильная фраза отличается от вводимой, либо принудительно произвести замену, чтобы не просить пользователя ввести данные еще раз

c\translate::changeKeyboard($text,$toRus=true);

Принудительное переключение раскладки с анлгийской на русскую (если $to_rus=true) и обратно (если $to_rus=false)

c\translate::smartKeyboardWord($str);
c\translate::smartKeyboard($str);

Автоматическая конвертация фразы целиком под автоматическое определение правильной раскладки.

Первая функция оперирует с фразой целиком, вторая - делит фразу по словам и подбирает каждое слово. Вторая предпочтительней для случаев, когда пользователь может ввести фразу на нескольких раскладках и каждое слово нужно рассматривать отдельно

Грамматика

Блок посвящен обработки вводимых слов в соответствии с правилами русского языка.

Функция проверки на мат

c\translate::mat($str,$trans=false);

Функция автоматически фильтрует все введенные матерные слова пользователя, автоматически проводя замену при помощи встроеного словаря.

Существует 3 варианта обращения к функции

$trans=false - функция работает только как обнаружитель мата в строке. Если обрануживается - функция возвращает позицию начала первого слова. Если не обнаруживается - функция возвращает false. Таким образом можно пускать комментарии на модерацию, если найден подозрительный кусок текста

$trans='soft' - Функция произведет автоматическую замену всех матерных слов на более мягкое значение, с сохранением смысла по возможности

$trans='star' - Функция произведент автоматическую замену всех матерных слов на те же слова, только со знаками * внутри

c\translate::grammar($str);

Функция автоматически исправит найденные грамматические ошибки в фразе, приведя фразу к единому стандарту. Функция использует свой внутренний словарь, который периодически пополняется. Все английские названия конвертируются в английское написание, чтобы привести все схожие фразы к единому стандарту.

Множественные числа

Для указания окончаний в количественных показателях - существует простая функция

c\translate::plural($number,$ending1,$ending4,$ending5);
//Например
echo 'Вам пришло '.$count.' '.c\translate::plural($count,'письмо','письма','писем');

Перевод

Кора позволяет осуществить перевод, локализацию проектов на разные языки. Все языковые выражения хранятся в файлах вида translate_{language}.php, расположеных в древовидной структуре проекта. Каждый языковой пакет загружается только, если ранее был выбран соответствующий маршрут в соответствии с роутингом.

 

Содержание файлов перевода

Каждый файл перевода содержит следующую структуру

<?php
namespace c;
translate::$charset=core::UTF8;
translate::dict('Source phrase','Исходная фраза');
translate::dict('Exit','Выход');
translate::dict('Updated {number} {number|plural|record|records}','Обновлено {number} {number|plural|запись|записи|записей}');

Поскольку все обращения к файлу будут относиться к классу - желательно в начале прописать неймспейс C

Рекомендуется, перед наполнением словаря переводов - указать кодировку данного файла на случай, если приложение у вас работает не в стандартной кодировке. Желательно явно указывать кодировку, если вы собираетесь заимствовать файл на другие приложения в других кодировках

Наполнение словаря переводов осуществляется через функцию c\translate::dict($source,$translate,$lower_priority=false);

Содержащую исходную фразу и фразу с переводом.

Фразы будут заменять ранее установленную фразу в порядке наследования. Параметр $low_priority не заменяет фразу, если ранее она уже была использована

Первой всегда загружается глобальный перевод в папке global-config

Использование переменных

В качестве фраз словаря - можно использовать вывод произвольных переменных. Такие переменные обрамляются ковычками {}. А также можно использовать произвольные функции, связаные с переменными через разделитель |

В качестве функций - можно использовать

Вывод локализованой фразы из справочника

Вы можете использовать перевод фраз на разные языки, используя функцию

<?=c\translate::t($phrase,$vars);?>

В качестве переменной $vars используется ассоциативный массив с переменными, встречаемыми в {фигурных скобках} внутри фразы перевода

Переключение языков

Переключение языков, локализаций осуществляется через глобальную переменную

c\core::$lang='ru';

Вы можете использовать предустановку по умолчанию.

Создано при помощи сервиса Core CMS