• Автор:

    Ash Williams
  • Добавлено:

    янв 21, 2017
  • Комментариев:

    1
  • Просмотров:

    669

Хак для DLE Локализация транслита

Хак для DLE Локализация транслита

Локализация транслита, делаем ЧПУ (человеко понятный УРЛ) для символов разных языков (Ü %DC и т.д). Хак DLE (дле) решает проблему с URL при публикации новостей с ЧПУ на сайтах с не английским или русским языком, где используется определенный символ для обозначения разных буквы.

К примеру:
Вот так получается, когда имя новостей начинается с русскими символами
Вот так называл пост: "Тест Проверка ЧПУ" на полной новостей получилось url:
https://домен/test-proverka-chpu.html


Английскими буквами тоже все нормально
например называния поста: "DataLife Engine 11.1"
на полной новостей получилось url:

вот так https://домен.com/muellif.html


но получилось вот так

https://домен.com/mllif.html


То есть, не существующие символы съедаются, или добавляется знак ?, в результате УРЛ становится не понятным.

Основная причина в том, что в DLE используется не все символы для разных языков, поэтому и происходит такой косяк. Также имеет значение какую кодировку файлов движка вы используете на своем сайте, то есть UTF-8 или WIN-1251 (подробнее об этом можно почитать здесь). Желательность использовать UTF-8 для не русскоязычных ресурсов

Проблему попробовали решить в ПС. Для того, чтобы можно была заменить url в полной новостей так, чтобы символы новостей были на английском было найдено в результате обсуждения.

Так пользователь "maxno" до этого редактировал файлы движка: admincheck.lng, adminpanel.lng, adminlogs.lng, help.lng, website.lng, что находятся в папке language/ (папка вашего языка)/ с целью перевода с русского на азербайджанский, для того, чтобы было понятно справку и подсказки управления панелью движка, то там были замечены символы в одном из файлов.

Итак, сам хак для DLE Локализация транслита
Транслит имени файла, ссылки или название новости сделать с человеко понятным видом (ЧПУ) может сделать любой. Для этого в файле languages/Russian/website.lng вам нужно добавить символы вашего языка, вот с этой страницы https://www.w3schools.com/tags/ref_urlencode.asp в данном блоке кода:

Внимание! Код приведен в качестве примера:
// Локализация транслита

$langtranslit = array(
'ç' => 'ch', 'ə' => 'e', 'ğ' => 'g',
'ı' => 'i', 'ö' => 'o', 'ş' => 'sh',
'ü' => 'u',

'Ç' => 'Ch', 'Ə' => 'E', 'Ğ' => 'G',
'İ' => 'I', 'Ö' => 'O', 'Ş' => 'Sh',
'Ü' => 'U',

'а' => 'a', 'б' => 'b', 'в' => 'v',
'г' => 'g', 'д' => 'd', 'е' => 'e',
'ё' => 'e', 'ж' => 'zh', 'з' => 'z',
'и' => 'i', 'й' => 'y', 'к' => 'k',
'л' => 'l', 'м' => 'm', 'н' => 'n',
'о' => 'o', 'п' => 'p', 'р' => 'r',
'с' => 's', 'т' => 't', 'у' => 'u',
'ф' => 'f', 'х' => 'h', 'ц' => 'c',
'ч' => 'ch', 'ш' => 'sh', 'щ' => 'sch',
'ь' => '', 'ы' => 'y', 'ъ' => '',
'э' => 'e', 'ю' => 'yu', 'я' => 'ya',
"ї" => "yi", "є" => "ye",

'А' => 'A', 'Б' => 'B', 'В' => 'V',
'Г' => 'G', 'Д' => 'D', 'Е' => 'E',
'Ё' => 'E', 'Ж' => 'Zh', 'З' => 'Z',
'И' => 'I', 'Й' => 'Y', 'К' => 'K',
'Л' => 'L', 'М' => 'M', 'Н' => 'N',
'О' => 'O', 'П' => 'P', 'Р' => 'R',
'С' => 'S', 'Т' => 'T', 'У' => 'U',
'Ф' => 'F', 'Х' => 'H', 'Ц' => 'C',
'Ч' => 'Ch', 'Ш' => 'Sh', 'Щ' => 'Sch',
'Ь' => '', 'Ы' => 'Y', 'Ъ' => '',
'Э' => 'E', 'Ю' => 'Yu', 'Я' => 'Ya',
"Ї" => "yi", "Є" => "ye",


Часть кода для добавления новых символов в примере выше
'ç' => 'ch', 'ə' => 'e', 'ğ' => 'g',
'ı' => 'i', 'ö' => 'o', 'ş' => 'sh',
'ü' => 'u',

'Ç' => 'Ch', 'Ə' => 'E', 'Ğ' => 'G',
'İ' => 'I', 'Ö' => 'O', 'Ş' => 'Sh',
'Ü' => 'U',


Не будет лишним установить правильный язык для страницы браузера, обозначение (RU, EN и т.д) вы можете посмотреть на странице https://www.w3schools.com/tags/ref_language_codes.asp для вашего языка на сайте.

Код меняется в этой строчке файла вашего шаблона в main.tpl в самом начале
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/EN/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="https://www.w3.org/1999/xhtml" lang="ru" xml:lang="ru">
.....
</html>


К примеру RU (русский) меняем на (EN) английский, код в самом конце:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/EN/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="https://www.w3.org/1999/xhtml" lang="en" xml:lang="en">
.....
</html>

dle
Вернуться

Комментарии:


  1. maxno → 23 января 2017 23:25
    Английскими буквами тоже все нормально
    например называния поста: "DataLife Engine 11.1"
    на полной новостей получилось url:
    вот так https://домен.com/muellif.html

    а вопше то должень быт так:
    Английскими буквами тоже все нормально
    например называния поста: "Müəllif"
    на полной новостей получилось url:
    вот так https://домен.com/muellif.html

    причем тут называния поста: "DataLife Engine 11.1"
    и url на полной новостей https://домен.com/muellif.html


    А еще не толька в файле languages/Russian/website.lng
    нужна добавить символы и в файл languages/Russian/adminpanel.lng
    так как, те у кого есть доступ к админ панель для добавление новости
    у них тоже самое не было косяк с url на полной новостей
Информация
Посетители, находящиеся в группе Гости, не могут оставлять комментарии к данной публикации.