Нормальная транслитерация модулем Transliteration

Главные вкладки

Аватар пользователя Cynicus Cynicus 9 января 2009 в 19:44

Небольшой фикс для модуля Transliteration
По умолчанию он некоторые буквы преобразует странно, например, "е" будет "ie", что делает текст не очень пригодным для чтения. Привел его в более нормальную форму, по большей части согласуясь с таблицей на сайте http://www.transliteration.ru/

Исключений сделал несколько:

  • Буква "ц" там идет как "c", заменил на более привычное сочетание "ts";

  • Буквы "ъ" и "ь" сделал пустыми, поскольку мне модуль требуется для генерации синонимов страниц с помощью pathauto, а в правильности восприятия апострофа браузерами очень сомневаюсь. В оригинале - "'" и "'-"

  • Буква "Э" в правильном варианте пишется с дефисом - "e-", но это не очень хорошо смотрится в адресе, потому тоже заменил на "e".

Для этого нужно исправить файл x04.php в папке дата. 04 здесь означает первые два символа из четырех в кодовой таблице, русский алфавит находится в промежутке 0410 - 0451, плюс 0401 для заглавной буквы "Ё".

<?php

return array(
  'en' => array('Jo', 'Io', 'Dj', 'Gj', 'Ie', 'Dz', 'I', 'Yi', 'J', 'Lj', 'Nj', 'Tsh', 'Kj', 'I', 'U', 'Dzh',
    'A', 'B', 'V', 'G', 'D', 'E', 'Zh', 'Z', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P',
    'R', 'S', 'T', 'U', 'F', 'H', 'Ts', 'Ch', 'Sh', 'Shch', '', 'Y', '', 'E', 'Yu', 'Ya',
    'a', 'b', 'v', 'g', 'd', 'e', 'zh', 'z', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p',
    'r', 's', 't', 'u', 'f', 'h', 'ts', 'ch', 'sh', 'shch', '', 'y', '', 'e', 'yu', 'ya',
    'jo', 'io', 'dj', 'gj', 'ie', 'dz', 'i', 'yi', 'j', 'lj', 'nj', 'tsh', 'kj', 'i', 'u', 'dzh',
    'O', 'o', 'E', 'e', 'Ie', 'ie', 'E', 'e', 'Ie', 'ie', 'O', 'o', 'Io', 'io', 'Ks', 'ks',
    'Ps', 'ps', 'F', 'f', 'Y', 'y', 'Y', 'y', 'u', 'u', 'O', 'o', 'O', 'o', 'Ot', 'ot',
    'Q', 'q', '*1000*', '', '', '', '', NULL, '*100.000*', '*1.000.000*', NULL, NULL, '"', '"', 'R\'', 'r\'',
    'G\'', 'g\'', 'G\'', 'g\'', 'G\'', 'g\'', 'Zh\'', 'zh\'', 'Z\'', 'z\'', 'K\'', 'k\'', 'K\'', 'k\'', 'K\'', 'k\'',
    'K\'', 'k\'', 'N\'', 'n\'', 'Ng', 'ng', 'P\'', 'p\'', 'Kh', 'kh', 'S\'', 's\'', 'T\'', 't\'', 'U', 'u',
    'U\'', 'u\'', 'Kh\'', 'kh\'', 'Tts', 'tts', 'Ch\'', 'ch\'', 'Ch\'', 'ch\'', 'H', 'h', 'Ch', 'ch', 'Ch\'', 'ch\'',
    '`', 'Zh', 'zh', 'K\'', 'k\'', NULL, NULL, 'N\'', 'n\'', NULL, NULL, 'Ch', 'ch', NULL, NULL, NULL,
    'a', 'a', 'A', 'a', 'Ae', 'ae', 'Ie', 'ie', '@', '@', '@', '@', 'Zh', 'zh', 'Z', 'z',
    'Dz', 'dz', 'I', 'i', 'I', 'i', 'O', 'o', 'O', 'o', 'O', 'o', 'E', 'e', 'U', 'u',
    'U', 'u', 'U', 'u', 'Ch', 'ch', NULL, NULL, 'Y', 'y', NULL, NULL, NULL, NULL, NULL),
);

Смысл, думаю, понятен, кому надо - поправит под свои нужды и предпочтения.

Комментарии

Аватар пользователя Azovsky Azovsky 9 января 2009 в 20:34

Спасибо большое!
Буду пробывать.

На днях сам хотел исправть эти моменты ("е" будет "ie", и для "ъ" и "ь" - особенно). Полез смотреть где ж править-то и не понял где Wacko Куча файлов в папке data... и не было время разбираться.

Аватар пользователя PaV PaV 27 января 2009 в 13:33

"PVasili" wrote:
А написать автору, чтобы поправил для всех?

написали-бы, но ктото из разработчиков требует патчем Sad

для себя почему массив такой большой или он содержит все 255 символов аскии

особенно что значит вторая часть

'Ps', 'ps', 'F', 'f', 'Y', 'y', 'Y', 'y', 'u', 'u', 'O', 'o', 'O', 'o', 'Ot', 'ot',
    'Q', 'q', '*1000*', '', '', '', '', NULL, '*100.000*', '*1.000.000*', NULL, NULL, '"', '"', 'R\'', 'r\'',
    'G\'', 'g\'', 'G\'', 'g\'', 'G\'', 'g\'', 'Zh\'', 'zh\'', 'Z\'', 'z\'', 'K\'', 'k\'', 'K\'', 'k\'', 'K\'', 'k\'',
    'K\'', 'k\'', 'N\'', 'n\'', 'Ng', 'ng', 'P\'', 'p\'', 'Kh', 'kh', 'S\'', 's\'', 'T\'', 't\'', 'U', 'u',
    'U\'', 'u\'', 'Kh\'', 'kh\'', 'Tts', 'tts', 'Ch\'', 'ch\'', 'Ch\'', 'ch\'', 'H', 'h', 'Ch', 'ch', 'Ch\'', 'ch\'',
    '`', 'Zh', 'zh', 'K\'', 'k\'', NULL, NULL, 'N\'', 'n\'', NULL, NULL, 'Ch', 'ch', NULL, NULL, NULL,
    'a', 'a', 'A', 'a', 'Ae', 'ae', 'Ie', 'ie', '@', '@', '@', '@', 'Zh', 'zh', 'Z', 'z',
    'Dz', 'dz', 'I', 'i', 'I', 'i', 'O', 'o', 'O', 'o', 'O', 'o', 'E', 'e', 'U', 'u',
    'U', 'u', 'U', 'u', 'Ch', 'ch', NULL, NULL, 'Y', 'y', NULL, NULL, NULL, NULL, NULL),

в иссуях висит багрепорт, но тишина Sad

Аватар пользователя PaV PaV 27 января 2009 в 15:26

пофиг со второй частью Smile за кросспостинг бить сильно,надеюсь не будут.
Сделал запись об изменённых таблицах для русского и эсперанто алфавитов (автор, надеюсь не против)
2 Cynicus для 5ки было проще один файлик в i18n

Аватар пользователя qman qman 29 марта 2009 в 12:50

Всем привет!
у меня Transliteration не поддерживает IMCE!
Данная проблема только у меня или у многих?
P.S. drupal 5.x

Аватар пользователя kodo kodo 17 июля 2009 в 5:39

А не кто не вкурсе. Как-то можно этот модуль одновременно на одном сайте для одного языка использовать, а для другого нет? Так как например pathauto для японского языка такой бред получается, что лучше уж иероглифы оставить.

Аватар пользователя webtram webtram 5 мая 2011 в 23:18

Недавно прочитал что в Transliteration нужно править так как там некоторые буквы не правильно транслирует а за этого гугл и яндекс не прочитает урл - Таблица транслитерации, понятнаякак Google, так и Яндексу:http://goo.gl/pcmh1

Вот что у меня получилось для модуля Transliteration 6.30

<?php$base = array(
  0x00 => 'Jo', 'Yo', 'Dj', 'Gj', 'Ie', 'Dz', 'I', 'Yi', 'J', 'Lj', 'Nj', 'Tsh', 'Kj', 'I', 'U', 'Dzh',
  0x10 => 'A', 'B', 'V', 'G', 'D', 'E', 'J', 'Z', 'I', 'Y', 'K', 'L', 'M', 'N', 'O', 'P',
  0x20 => 'R', 'S', 'T', 'U', 'F', 'H', 'Ts', 'Ch', 'Sh', 'Shch', '', 'Y', '', 'E', 'Yu', 'Ya',
  0x30 => 'a', 'b', 'v', 'g', 'd', 'e', 'j', 'z', 'i', 'y', 'k', 'l', 'm', 'n', 'o', 'p',
  0x40 => 'r', 's', 't', 'u', 'f', 'h', 'ts', 'ch', 'sh', 'shch', '', 'y', '', 'e', 'yu', 'ya',
  0x50 => 'je', 'yo', 'dj', 'gj', 'ie', 'dz', 'i', 'yi', 'j', 'lj', 'nj', 'tsh', 'kj', 'i', 'u', 'dzh',
  0x60 => 'O', 'o', 'E', 'e', 'Ie', 'ie', 'E', 'e', 'Ie', 'ie', 'O', 'o', 'Io', 'io', 'Ks', 'ks',
  0x70 => 'Ps', 'ps', 'F', 'f', 'Y', 'y', 'Y', 'y', 'u', 'u', 'O', 'o', 'O', 'o', 'Ot', 'ot',
  0x80 => 'Q', 'q', '*1000*', '', '', '', '', NULL, '*100.000*', '*1.000.000*', NULL, NULL, '"', '"', 'R\'', 'r\'',
  0x90 => 'G\'', 'g\'', 'G\'', 'g\'', 'G\'', 'g\'', 'J\'', 'j\'', 'Z\'', 'z\'', 'K\'', 'k\'', 'K\'', 'k\'', 'K\'', 'k\'',
  0xA0 => 'K\'', 'k\'', 'N\'', 'n\'', 'Ng', 'ng', 'P\'', 'p\'', 'Kh', 'kh', 'S\'', 's\'', 'T\'', 't\'', 'U', 'u',
  0xB0 => 'U\'', 'u\'', 'Kh\'', 'kh\'', 'Tts', 'tts', 'Ch\'', 'ch\'', 'Ch\'', 'ch\'', 'H', 'h', 'Ch', 'ch', 'Ch\'', 'ch\'',
  0xC0 => '`', 'J', 'j', 'K\'', 'k\'', NULL, NULL, 'N\'', 'n\'', NULL, NULL, 'Ch', 'ch', NULL, NULL, NULL,
  0xD0 => 'a', 'a', 'A', 'a', 'Ae', 'ae', 'Ie', 'ie', '@', '@', '@', '@', 'J', 'j', 'Z', 'z',
  0xE0 => 'Dz', 'dz', 'I', 'i', 'I', 'i', 'O', 'o', 'O', 'o', 'O', 'o', 'E', 'e', 'U', 'u',
  0xF0 => 'U', 'u', 'U', 'u', 'Ch', 'ch', NULL, NULL, 'Y', 'y', NULL, NULL, NULL, NULL, NULL, NULL,
);?>

если не правильно поправил исправте!

Аватар пользователя avast@ avast@ 7 декабря 2012 в 15:20

Здр! Помогите поправить файл (не разбираюсь), у меня онлайн транслируется как onlyan, (сборка: pathauto 2.0 and Transliteration 3.1) мне нужно => online! Знаю, что можно потом править алиасы, но такие колхозные варианты Drupala не очень приемлемы.

Аватар пользователя Cynicus Cynicus 8 декабря 2012 в 6:23

Хотите online - пишите online или правьте алиасы руками. Транслитерация ни разу не перевод, а преобразование слова в написание буквами другого алфавита. И таким способом "Онлайн" может стать "Onlain" или "Onlayn".
Если не устраивает ни один из вариантов - модуль перевода все еще ждет своего своего создателя или заказчика.

Аватар пользователя avast@ avast@ 9 декабря 2012 в 10:47

"Cynicus" wrote:
Хотите online - пишите online или правьте алиасы руками. Транслитерация ни разу не перевод, а преобразование слова в написание буквами другого алфавита. И таким способом "Онлайн" может стать "Onlain" или "Onlayn".
Если не устраивает ни один из вариантов - модуль перевода все еще ждет своего своего создателя или заказчика.

Я пля думаю чё яндекс друпал не индексирует...(((

Аватар пользователя avast@ avast@ 9 декабря 2012 в 11:40

"Cynicus" wrote:
Хотите online - пишите online или правьте алиасы руками. Транслитерация ни разу не перевод, а преобразование слова в написание буквами другого алфавита. И таким способом "Онлайн" может стать "Onlain" или "Onlayn".
Если не устраивает ни один из вариантов - модуль перевода все еще ждет своего своего создателя или заказчика.

Да и спасибо за сылку, я и не знал что означает слово траслитерация. Теперь теперь точно модуль закажу!

Аватар пользователя avast@ avast@ 31 декабря 2012 в 14:31

Решено. Для Drupal 6.26 модуль Pathauto 6.x-1.6 работает независимо, без модуля Transliteration. В самом модуле Pathauto достаточно подправить файл i18n-ascii.txt под свои нужды Данный случай исключает правку массивов, иначе ставя под Drupal 6 другую версию Pathauto появляется гемморой который который успешно решил пользователь Cynicus.

Аватар пользователя Cynicus Cynicus 10 декабря 2012 в 3:02

"avast@" wrote:

Решено. Для Drupal 6.26 модуль Pathauto 6.x-1.6 работает независимо, без модуля Transliteration. В самом модуле Pathauto достаточно подправить файл i18n-ascii.txt под свои нужды Данный случай исключает правку массивов, иначе ставя под Drupal 6 другую версию Pathauto появляется гемморой который который успешно подмял под себя пользователь Cynicus.

Молодец, сумел найти альтернативу решению четырехлетней давности.

Аватар пользователя w007s w007s 13 января 2014 в 3:31

вот добавил замену мягкого знака "ь" на i, это в файле \sites\all\modules\transliteration\data\x04.php, за это отвечает 'i' в строчках "0x20 =>" "0x40 =>". И поменял "й" на "j", за это отвечает 'j' в строчках "0x10 =>" и "0x30 =>"

$base = array(
  0x00 => 'Jo', 'Yo', 'Dj', 'Gj', 'Ie', 'Dz', 'I', 'Yi', 'J', 'Lj', 'Nj', 'Tsh', 'Kj', 'I', 'U', 'Dzh',
  0x10 => 'A', 'B', 'V', 'G', 'D', 'E', 'Zh', 'Z', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P',
  0x20 => 'R', 'S', 'T', 'U', 'F', 'H', 'C', 'Ch', 'Sh', 'Sh', '', 'Y', 'I', 'E', 'Yu', 'Ya',
  0x30 => 'a', 'b', 'v', 'g', 'd', 'e', 'zh', 'z', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p',
  0x40 => 'r', 's', 't', 'u', 'f', 'h', 'c', 'ch', 'sh', 'sh', '', 'y', 'i', 'e', 'yu', 'ya',
  0x50 => 'je', 'yo', 'dj', 'gj', 'ie', 'dz', 'i', 'yi', 'j', 'lj', 'nj', 'tsh', 'kj', 'i', 'u', 'dzh',
  0x60 => 'O', 'o', 'E', 'e', 'Ie', 'ie', 'E', 'e', 'Ie', 'ie', 'O', 'o', 'Io', 'io', 'Ks', 'ks',
  0x70 => 'Ps', 'ps', 'F', 'f', 'Y', 'y', 'Y', 'y', 'u', 'u', 'O', 'o', 'O', 'o', 'Ot', 'ot',
  0x80 => 'Q', 'q', '*1000*', '', '', '', '', NULL, '*100.000*', '*1.000.000*', NULL, NULL, '"', '"', 'R\'', 'r\'',
  0x90 => 'G\'', 'g\'', 'G\'', 'g\'', 'G\'', 'g\'', 'Zh\'', 'zh\'', 'Z\'', 'z\'', 'K\'', 'k\'', 'K\'', 'k\'', 'K\'', 'k\'',
  0xA0 => 'K\'', 'k\'', 'N\'', 'n\'', 'Ng', 'ng', 'P\'', 'p\'', 'Kh', 'kh', 'S\'', 's\'', 'T\'', 't\'', 'U', 'u',
  0xB0 => 'U\'', 'u\'', 'Kh\'', 'kh\'', 'Tts', 'tts', 'Ch\'', 'ch\'', 'Ch\'', 'ch\'', 'H', 'h', 'Ch', 'ch', 'Ch\'', 'ch\'',
  0xC0 => '`', 'Zh', 'zh', 'K\'', 'k\'', NULL, NULL, 'N\'', 'n\'', NULL, NULL, 'Ch', 'ch', NULL, NULL, NULL,
  0xD0 => 'a', 'a', 'A', 'a', 'Ae', 'ae', 'Ie', 'ie', '@', '@', '@', '@', 'Zh', 'zh', 'Z', 'z',
  0xE0 => 'Dz', 'dz', 'I', 'i', 'I', 'i', 'O', 'o', 'O', 'o', 'O', 'o', 'E', 'e', 'U', 'u',
  0xF0 => 'U', 'u', 'U', 'u', 'Ch', 'ch', NULL, NULL, 'Y', 'y', NULL, NULL, NULL, NULL, NULL, NULL,
);
Аватар пользователя w007s w007s 13 января 2014 в 4:37

"RxB" wrote:
мягкий знак на "i" это мощно!
а на что ещё заменить? например семья - semiya лучше чем semya, и колье - kolie - kole хуже, но можно ещё на j, тогда kolje, seljdj, по моему все таки i лучше.

Аватар пользователя Виктор Степаньков ака RxB Виктор Степаньк... 13 января 2014 в 11:31

"w007s" wrote:
а на что ещё заменить? например семья - semiya лучше чем semya, и колье - kolie - kole хуже, но можно ещё на j, тогда kolje, seljdj, по моему все таки i лучше.

Существует, как минимум, три ГОСТа на транслителирацию

Аватар пользователя w007s w007s 13 января 2014 в 12:01

"RxB" wrote:
Существует, как минимум, три ГОСТа на транслителирацию

Этих гостов и не гостов много, только вот чем заменить мягкий знак в адресах сайтов, вопрос открытый)

Аватар пользователя drupby drupby 13 января 2014 в 12:30

"w007s" wrote:
вопрос открытый)

а ты введи эти запросы с мягкими знаками в гугл и яндекс и посмотри , как в результатах выдачи урлы сформированы - займись аналитикой , хотя ПС разницы не будет как урл сформирован хоть semiya хоть semya хоть semja(гуглу так больше family нравится) , не на то время тратишь

Аватар пользователя w007s w007s 13 января 2014 в 17:13

"drupby" wrote:
как в результатах выдачи урлы сформированы - займись аналитикой

так анализ и привел к "i", поисковикам все равно, а людям вроде удобнее