russian icon indicating copy to clipboard operation
russian copied to clipboard

a few improvements to the "russian" gem

Open relev opened this issue 12 years ago • 9 comments

  1. a translation scheme fix (translit("схема") should give "skhema" and not "shema")
  2. simple detransliteration (maybe someone will need it...)

each change is accompanied with corresponding tests.

PS. The last commit removes all trailing space I found in ruby files. Unsure if you need it..

relev avatar Mar 26 '12 13:03 relev

Детранслит хороший. А почему 1. считается фиксом, на основании какого правила?

yaroslav avatar Mar 26 '12 13:03 yaroslav

Не совсем понял вопрос.

Раньше "схема", "сходить" и подобные им слова транслитерировались как "shema", "shodit", которые читаются как "шема", "шодит", что не очень удобно. С добавлением правила "сх => skh" они транслитерируются в skhema и skhodit, что читается правильно (и позволяет выполнить обратную транслитерацию).

Пускай будет не фикс, а дополнение :)

relev avatar Mar 26 '12 15:03 relev

Ну, я имею в виду что транслитерация делается по определенным правилам (указанным где-то), точно так же как и дата-время делается по ГОСТу. Просто я могу вспомнить один или два патча на тему транслитерации где слова выглядели, скажем, «лучше», но неясно, почему именно этот вариант транслитерации считался правильным.

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

Надеюсь, объяснил и не показался при этом унылым формалистом.

yaroslav avatar Mar 26 '12 15:03 yaroslav

Рассмотрим 2 утверждения:

  1. Правила транслитерации имеют дело с написанием букв. Как получившаяся строка потом читается человеком им, как правило, дела нету.
  2. ГОСТ Р 52535.1-2006 Приложение А Предлагает транслитерировать русскую Х как KH http://protect.gost.ru/v.aspx?control=8&baseC=-1&page=0&month=-1&year=-1&search=&RegNum=1&DocOnPageCount=15&id=120830&pageK=FEBC4724-215A-4FD6-BEA9-8F7E37C5F7E1

Однако когда в тексте везде используется kh, это не удобно читать (хотя, наверное, дело привычки). Сравните:

Teplokhod khodit khuzhe v khrenovoi bukhte. и Teplohod hodit huzhe v hrenovoi buhte.

Второй вариант гораздо легче для восприятия (или мне кажется?) Однако в таком случае возникает проблема с буквосочетанием "sh". Для разрешения оного можно воспользоваться рекомендацией ГОСТа (должен же от него быть какой-то толк?) и англоязычных товарищей (говорят, что так понятно и удобно - skhema, но buhta).

Да, такой подход несколько усложняет сам процес транслитерации (получается, что результирующая буква зависит от контекста, а это не всегда легко реализовать), и поэтому редко используется на практике. Однако Ваша базовая реализация дала очень хороший инструмент (использование регулярных выражений), что позволяет использовать контекст и добиваться более легкочитаемых результатов. В частности, можно легко сделать отображение "компьютер" -> "computer", "консул" -> "consul", "цент" -> "cent" и т.п. И обратное преобразование тоже. Для своего проекта я наверное так и сделаю... Возможно, прикручу несколько вариантов транслитерации, чтобы можно было выбрать алгоритм - описанный в ГОСТ, либо оптимизированный для восприятия человека, знакомого с английским.

Применение этой схемы однозначно не понравится тем, у кого в базе хранятся транслитерированные строки для поиска, ведь им придётся перетранслитерировать их заново. Поэтому я не в претензии, если этот (или даже все) коммиты не будут приняты в Ваш репозиторий.

Предлагаю пока отказаться от коммита с фиксом схемы - дабы не будоражить общественность. Когда сделаю поддержку нескольких схем - тогда и интегрировать в Ваш репозиторий.

relev avatar Mar 26 '12 16:03 relev

В частности, можно легко сделать отображение "компьютер" -> "computer"

и при этом чтобы не получалось "комар" -> "comar" .

relev avatar Mar 26 '12 16:03 relev

skhema потому что согласная перед х buhta tahta cheburahta потому что гласная перед х

renius avatar Jul 18 '12 04:07 renius

renius, я не совсем понял Вашу мысль. Единственная последовательность букв, которая вызывает затруднения при чтении транслитерированного текста (при условии замены русской "х" на латинскую "h") - это "сх", потому что в транслитерированном варианте получается "sh", что воспринимается как "ш". Для обработки именно этого случая я добавил правило, благо механизм движка замены, доступный в геме, намного мощнее предполагаемого авторами ГОСТа.

relev avatar Jul 18 '12 05:07 relev

@yaroslav, а можно хотя бы детранслит отдельно включить в гем?

alsemyonov avatar Sep 08 '12 16:09 alsemyonov

@yaroslav есть какие-нибудь новости по этому PR?

scarfacedeb avatar Jan 29 '15 15:01 scarfacedeb