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

Прислано: Cynicus

пт, 09/01/2009 - 16: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 в пт, 09/01/2009 - 17:34.

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

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


Опубликовано PVasili в сб, 10/01/2009 - 08:21.

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


Опубликовано PVasili в сб, 10/01/2009 - 12:41.

Ещё бы этот модуль искал аналоги а-ля Рим -> Rome цены бы не было :)


Опубликовано Cynicus в пн, 12/01/2009 - 02:21.

2PVasili
> Ещё бы этот модуль искал аналоги а-ля Рим -> Rome цены бы не было :)
http://drupal.org/project/promt


Опубликовано PaV в вт, 27/01/2009 - 10:33.

"PVasili" написал(а):

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

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

для себя почему массив такой большой или он содержит все 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),

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


Опубликовано PaV в вт, 27/01/2009 - 12:26.

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


Опубликовано Dimm в вс, 01/03/2009 - 09:56.

Спасибо! Тоже понадобилось.


Опубликовано qman в вс, 29/03/2009 - 08:50.

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


Опубликовано PVasili в чт, 02/04/2009 - 11:48.

"Cynicus" написал(а):

> Ещё бы этот модуль искал аналоги а-ля Рим -> Rome цены бы не было :)
http://drupal.org/project/promt

Page not found


Опубликовано Cynicus в ср, 08/04/2009 - 03:20.

"PVasili" написал(а):

Page not found

 PVasili's sense of humour not found ; )


Опубликовано Gairon в чт, 16/07/2009 - 16:32.

"Cynicus" написал(а):

PVasili's sense of humour not found ; )

А было бы неплохо такой модуль иметь на многоязычном сайте.


Опубликовано kodo в пт, 17/07/2009 - 01:39.

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


Опубликовано webtram в чт, 05/05/2011 - 19: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*'NULLNULL'"''"''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\''NULLNULL'N\'''n\''NULLNULL'Ch''ch'NULLNULLNULL,
  
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'NULLNULL'Y''y'NULLNULLNULLNULLNULLNULL,
);
?>

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