Сервис именно с таким кодовым названием был написан во время зимней сессии, но так и не увидел свет, потому что инициаторы всего этого дела пошли зарабатывать деньги, а не делать интересные проекты. Но на выдумывание более эффективного алгоритма было потрачено много интересных часов, поэтому пропадать такое счастье просто не могло. В итоге было решено делать цикл по массиву правил и по одному пытаться применить их к слову. Когда все правила были применены - оставшиеся буквы в слове просто заменялись как в обычном транслите. После вечера тестирований вроде было все почти хорошо и программа работала на моем наборе правил, хотя и английских. Но я с удовлетворением получил фразу "лет ми спик фром май харт". Чуть позже силами вышеописанных товарищей был написан целый набор правил для французского языка и эта работа тоже заслуживает уважения. Я давно хотел сделать какой-нибудь сервис с лингвистами, ну хотя бы так.
В итоге мы имеем: если вы не знаете языка, если вы не умеете читать на нем или вообще не можете разобрать иероглифы (а в планах были всякие японские и арабские языки), вы всегда можете узнать как они примерно произносятся и купить себе 40 килограмм хурмы в любой стране.
С технической точки зрения язык характеризуется:
1) Списками гласных-согласных с их транскрипциями. Это стандартно.
2) Списком правил перевода (токенов). Вот тут поподробнее:
У нас имеется несколько видов правил:
"~lo": "лоо" - перед токеном гласная
"fa#": "фаа" - после токена следует согласная
"-es": "ес" - слово заканчивается на этот токен
"-pro-": "про" - этот токен в середине слова, не важно какие буквы его окружают
"the-": "зе" - слово начинается с него
"gr": "грр" - просто содержит (наименьший приоритет, то есть -gr приоритетнее, чем gr)
"#y": "ай" - перед токеном согласная
и.т.д.
У правил есть свои приоритеты, если возникают коллизии. Они таковы: приоритет ~ и # выше, чем -, который выше, чем просто "голый" токен.
3) Списком исключений. Ну бывают такие слова, которые не читаются ни по каким правилам.
Соответственно это практически гарантирует, что возможно создать такие условия и словари, которые будут идеально транслитировать язык. По крайней мере традиционный. Соответственно, все упирается только в набор правил, которые будут применяться. Но это уже задача не моя :)
Хотя я не знаю зачем это надо, когда Google Translate давно запустил озвучивание переводов, а недавно сильно улучшил его. Поэтому выкладываю просто похвастаться. И только французский.
Некоторые правила написаны хуево, так что возможны ошибки, например часто путает "н" и "м". Ну а поиграть можете по ссылке выше.
upd: Так как никто не читает это, предупреждаю еще раз: словарь не тестировался, написан хуево, правила некоторые глупые, так что не смотрите на это как на готовый продукт.
Немного криво, но добавив акцент можно спокойно гулять по Парижу
Со французского звучит кривовато, но работает
Тукай знает французский? или это о idfy ?
Штука планируется эпичная и многим нужная в работе, и в целом довольно интересная, но времени на нее нет. Если есть желающие - можете помочь мне и Саше Савенкову в работе над транслитом.
Во-вторых, пользуясь случаем: мы ищем дизайнера в Новосибирске. Прямо сейчас и еще неделю-две в будущем. (Ну, вдруг сюда дизайнер внезапно заглянет, кто знает?)
А поскольку нет верного результата, ничего хорошего не получится сказать о самом алгоритме и реализации.
Да, забыл, что не описал саму идею. Добавил.
Во французском часто используются правила, связанные с окончанием слова. Скажем, согласная на конце слова не читается, за исключением каких-то особых букв (например, R, они, блин, почему-то читаются). Однако при этом, если после согласной на конце стоит гласная - согласная читается (а гласная, кажется уже нет).
Более того, французы любят говорить фразы однимБлятьБольшимСловомСука. И при этом правило "гласная после согласной" имеет место быть даже если гласная относится совсем к другому слову. Например:
"Nous" должно читаться как "ну".
"avons" должно читаться как "авон".
Сочетание "Nous avons" читается как "нузавон" (хрен бы знал, почему "s" превратилась в "з").
Символ апострофа используется для сокращения слов (обычно артиклей), что приводит к новой связке слов "le horizon" -> "l'horizon" (не ручаюсь за правильность рода). При этом буква "H" в их языке вообще ущербна и не читается никогда. Даже в начале слова. Даже в связке. Поэтому "l'horizon" читается как "лёризон", мать их.
Поэтому для большей полноты правил придется добавлять новые условия и код.
Ненавижу французский. Ненавижу французов.
Программисты - рабы. Что им сказали, то и должны делать.
о_О нихуя себе
> CPU iPhone OS 4_2_1 like Mac OS X; ru-ru
ОТДАЙ САШЕ АЙФОН 4, ЖЕНЩИНА!
Развелось яблочек в моем уютненьком.
з.ы. ну чота очень захотелось
юдденли, хе доор вас опен!
либо я что-то забыл, либо фигня детектид.
Если интересно, все правила брались из справочника Гиляревского и Старостина, хотя я даже сейчас на паре имен проверил, жесть какая-то получилась.