Перевод русских букв на латиницу php

PHP функция перевода в транслит translit()

Достаточно сложно сказать, какой вариант ЧПУ наиболее оптимален для поисковых систем и насколько это влияет на релевантность. В рамках данной статьи я решил опустить данный вопрос и предложить вашему вниманию готовую php-функцию перевода кириллицы (русского) в транслит, которую я использую в своих проектах.

Нюансы перевода в транслит

PHP-функция translit()

Всё выше сказанное, по крайней мере, в упрощенном виде, реализовано в используемой мной функции перевода в транслит, вот её php-код:

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

Коротко о транслитерации

Процесс транслитерации имеет массу особенностей. В своей статье я остановился именно на переводе кириллицы в транслит, т.е. русский текст набранный латинскими буквами. Предложенный вариант php-функции, заточен под создание ЧПУ, которое нормально воспринимается поисковыми системами Google и Яндекс. В принципе, translit() я использую как одну из функций набора фильтров, что позволяет автоматизировать сам процесс обработки данных, но это совсем другая история.

Ну, и т.к. мы заговорили о ЧПУ, следует также сказать и о полноценном переводе. Очевидно, что реализация такого варианта собственными силами не будет простой, а значит более правильно будет воспользоваться сторонним сервисом, например, Google переводчиком. Если данная тема Вам интересна, рекомендую ознакомиться с моей PHP-функцией многоязычного перевода gtranslate().

На этом у меня всё. Спасибо за внимание. Удачи!

По-моему это очень недоработанная транслитерация, применять где-то на практике ее будет сложно. Слово «объектив» у вас будет «obektiv», без указания смягчения буквы «б». Нормальные транслитераторы делают «ob’ektiv» или «objektiv»

2 декабря 2013 г., 11:25 Удалить комментарий

@plutov.by: приведенный пример транслитерации заточен под ЧПУ, а в нём символ одинарной кавычки не допустим, а точнее вызовет дополнительные проблемы.

2 декабря 2013 г., 11:29 Удалить комментарий

Тогда беру свои слова обратно, пропустил ЧПУ, это всё понедельник 🙂

2 декабря 2013 г., 11:31 Удалить комментарий

@plutov.by: не, в принципе, логично, но невозможно учесть все варианты, а транслит обычно используют именно под ЧПУ. 🙂

2 декабря 2013 г., 11:43 Удалить комментарий

так как после удаления недопустимых символов возникают двойные, тройные и т.д. пробелы

а в целом хорошая функция получилась, вычищает разный мусор и делает всё красиво! 😉

24 января 2015 г., 0:48 Удалить комментарий

Спасибо большое. часть вашего кода мне очень помогла.

28 октября 2015 г., 12:18 Удалить комментарий

12 ноября 2015 г., 17:07 Удалить комментарий

2Олег так функция возвращает значение, т. е. его можно присвоить переменной:

$result = translit(‘функция перевода в транслит’);

или вывести на экран:

echo translit(‘функция перевода в транслит’);

12 ноября 2015 г., 17:09 Удалить комментарий

Спасибо за подсказку

14 ноября 2015 г., 17:03 Удалить комментарий

Чтобы не задавать локаль для strtolower($s), можно добавить соответствия для заглавных букв в array() и потом уже переводить в нижний регистрр

28 февраля 2016 г., 18:58 Удалить комментарий

2Алексей Можно, но это значительно увеличит размер массива.

1 марта 2016 г., 11:41 Удалить комментарий

Спасибо. Сэкономил ку-у-у-учу времени. Просто copy&paste и все работает!

18 сентября 2016 г., 3:25 Удалить комментарий

А могу я эту функцию вставить в обработчик формы, чтобы он в строку дополнительную загонял транслитом?

23 октября 2016 г., 21:19 Удалить комментарий

Я так делал для своих CMSок, что ЧПУ генерить.

23 октября 2016 г., 23:01 Удалить комментарий

Спасибо Автор 🙂 работает все оху. о)

11 декабря 2016 г., 16:57 Удалить комментарий

Я бы еще добавил ‘UTF-8’ в строку mb_strtolower($s, ‘UTF-8’) : strtolower($s, ‘UTF-8’);

23 февраля 2017 г., 15:55 Удалить комментарий

3 марта 2017 г., 18:37 Удалить комментарий

Спасибо. Отличная функция. Ооочень помогла!

24 марта 2017 г., 14:52 Удалить комментарий

12 апреля 2017 г., 20:34 Удалить комментарий

Благослови Вас бог. Я чуть не потратил кучу времени.

Источник

Транслитерация в Excel, замена русских букв на английские

Как перевести кириллицу в транслит в Excel?

Технически транслитерация — это замена по списку значений — символов на определенные их эквиваленты в другой раскладке. Значит, и задача состоит в том, чтобы в Excel осуществить эту серию замен.

Удивительно, но сделать такую массовую замену и транслитерировать текст в Excel можно множеством способов. Обо всех подробнее далее.

Формула транслита с помощью стандартных функций Excel

Наименее изящное, тем не менее, самое простое решение задачи. В Excel для замены символов есть функция ПОДСТАВИТЬ (англ. SUBSTITUTE). Формула принимает на вход 4 аргумента:

Четвертый параметр является опциональным и, если он не заполнен, заменяются все встреченные в тексте фрагменты.

Как раз то, что нам нужно! Поскольку Excel позволяет составлять сложные вложенные функции, мы можем сделать эту серию замен в одной много раз вложенной формуле.

Но есть несколько проблем, которые в сочетании не дают возможность сделать идеальную единую формулу транслита. Вот они:

Будь в русском алфавите хотя бы на одну букву меньше, мы бы уложились в ограничения Excel. Есть ли решение? Да, довольно простое.

Формула на 64 уровня вложенности без заглавных Ъ и Ь

Как правило, заглавные буквы в словах бывают, если это начало слова. Или если это аббревиатура, но аббревиатуры тоже составляются из первых букв слов.

А вы знаете слова, начинающиеся с Ъ или Ь? 🙂

Кажется, их можно пропустить. Так мы экономим два уровня вложенности и укладываемся в лимиты Excel (66 — 2 = 64)!

Важно также учитывать, что при транслитерации заглавных букв Ж, Ш, Ч, Щ и т.д., когда английский эквивалент состоит из нескольких букв, заглавной на латинице должна быть только первая. Интернет полон решениями, где этот момент не учтен. Итак, вот наиболее полная корректная формула:

Скачать файл-шаблон с транслитерацией

Формула выше на основе функции ПОДСТАВИТЬ с несколькими условиями может быть видоизменена — вместо явного прописывания текстовых значений, можно сделать ее на основе конкретных ячеек. Чем удобнее такой подход? Тем, что формулу менять не нужно, а данные для замены представлены в удобном для восприятия и редактирования формате в столбцах A и B.

Транслитерация с помощью таблицы замен и формулы с 64 уровнями вложенности

По ссылке можно скачать файл-шаблон, в котором применены эти функции.

Формулы транслита, итоги

У подхода с созданием таких мега формул есть свои плюсы и минусы. Минус один — они громоздки и такое не так-то просто сходу набрать. Поэтому их нужно где-то хранить и копировать при необходимости.
Плюсы в основном происходят из недостатков VBA-кода:

Функция на VBA

Код пользовательской функции, которая транслитерирует строчные в строчные, а заглавные — в заглавные, и при этом транслитерирует заглавные буквы Ж, Ш, Х, Ч, Щ и подобные, делая в транслите заглавной только первую букву (Zh, Sh, Kh, Ch, Sch…).

Заменить русские буквы на английские в Excel и наоборот

Последние два пункта тесно связаны с ситуациями, когда удалось найти русские слова, содержащие латиницу или английские слова с кириллическими символами, и теперь нужно исправить такой текст.

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

Источник

Русский язык латиницей?

В 2017 году один депутат предложил разработать дополнительный алфавит для русского языка на основе латиницы. И несмотря на то, что за последнее время это предложение высказывалось много раз различными людьми, и в этот раз всерьёз его никто рассматривать не стал. А знаете ли вы, что в начале 30-х годов такие предложения обсуждались на самым высочайшем уровне, и, кто знает, может быть, если бы не определённое стечение обстоятельств, вы бы читали этот текст не на кириллице. Но для начала обратимся к истории.

Первое приобщение русского языка к латинице произошла, как не трудно догадаться, во время Петра I. Именно при нём получил своё распространение гражданский шрифт, который во многом копировал начертание букв латинского алфавита. Тогда текст казался чуть более приближенным к тексту на латинице, так как в ходу были буквы «s» вместо «з», «i» вместо «и», а рисунок строчных букв «д», «т», «п» и «ь» фактически копировал латинские «g», «m», «n», «b».

ТексmЪ вЬıгʌяgѢʌЪ mакiмЪ обраsoмЪ i чѢмЪ-mо наnомiнаʌЪ современную mакЪ наsЬıваемую боʌгарiцу:

Впоследствии, как я писал в другой своей статье, русский алфавит на протяжении всей первой половины XVIII века претерпевал определённые изменения, и только начиная с 1758 г. его состав утвердился и более уже не менялся до 1918 г. Рисунок букв с того времени стал более походить на современный, а «латинские» начертания символов первоначального гражданского шрифта просто переместились в курсив.

Начиная с XIX века разные люди начали озвучивать мысль о том, что неплохо было бы либо сам русский язык перевести на латиницу, либо привести в порядок правила передачи русского языка латиницей. Все они были по большей части маргинальными, к тому же, все — с весьма трудным сводом правил. Из известных людей того времени, которые всерьёз озвучивали такие идеи можно вспомнить только В. Г. Белинского, который составил алфавит, по большей части совмещающий латинские литеры с некоторыми русскими.

По факту вопрос перевода русского языка на латиницу был, ещё раз повторюсь, весьма маргинальным, всех на тот момент больше заботило то, как бы упростить кириллическое правописание да ять с ером убрать.

Решать языковые вопросы стало проще после революции. Практически сразу после установления советской власти большевикóв интересовала языковая политика. Тому способствовал ряд причин, связанный с наличием огромного пласта безграмотного населения и большого количества языков, которые к тому моменту были бесписьменными. Решить эти две проблемы предлагалось так:

1. Для русского языка — упрощением правописания и политикой ликбеза — ликвидацией безграмотности;

2. Для национальных языков — обретением письменности и созданием литературных норм с последующим обучением грамоте нацменьшинств.

Эта политика привела к тому, что под эгидой Наркомпроса в 20-х — 30-х годах огромное количество лингвистов занимались разработкой новых систем письменности.

Письменность для национальных языков

Надо сказать, что большинство языков на территории современной Российской Федерации обрело письменность именно в то время. При этом сначала языкам старались давать письменность уже сразу на латинице, так как считалось, что именно этот алфавит является наиболее перспективным и международным. В истории этот период времени получил название латинизации.

Надо сказать, что за дело тогда взялись капитально и с размахом. Письменность на основе латиницы получило огромное количество языков, до этого не использовавшие никакую письменность или использовавшие различные письменности без каких-либо чётких правил, как можно было бы сказать словами летописца Храбра «без устроения». Чтобы понять это самое «без устроения» приведу пример того, что в XIX веке каждый писатель пытался создать свои правила письменности и использовал свой набор символов для записи текста на национальном языке, не имеющего на тот момент официально утверждённых правил правописания. Это вносило определённый сумбур и не способствовало пониманию.

Однако не стоит думать, что только бесписьменные языки подвергаются политике латинизации. Так тюркские языки, пользовавшиеся на тот момент арабской вязью, одними из первых получают новые алфавиты на основе латиницы. Для этого созывается особый съезд тюркских народов, которые договариваются об унификации символов для записи тюркских языков.

Русский язык латиницей

Идейные вдохновители политики латинизации — Луначарский и Ленин в своё время высказывали идею о том, что помимо младописьменных языков необходимо перевести и русский язык на латиницу. Для этого даже существовало несколько проектов.

Согласно этим проектам русский язык получал письменность по принципу практически полного соответствия буква кириллицы = буква латиницы. Кстати, этот же принцип действует сегодня в современном сербском языке, который использует две письменности одновременно: и кириллицу, и латиницу.

Для создания нового алфавита также взяли опыт других славянских языков. В итоге на рассмотрении было представлено три проекта, которые отличались только способом выражения некоторых символов.

Для смягчающих «ё», «ю» и «я» были предложены различные символы, самые простые из которых выглядели как ö, ü и ä.

Теперь, на всякий, подытожим, что чему соответствует:

V itoge polucalsä by vot takoj vot tekst, kotoryj vpolne moƶno procestj i ponätj. Kto znajet, cto stalo by s russkim jazykom, jesli by eto voşlo v ƶiznj togda.

Почему же мы так не пишем сейчас?

Ответ вполне очевиден, уже к середине тридцатых годов многие языки, даже те, которые получили уже письменность на латинской основе, начинают переводиться на кириллицу. Естественно, проекты перевода русского языка на латиницу были также отклонены. Связано это было с отказом Советского союза от политики интернационала, а также ухудшением отношений с Турцией, которая пользовалась также латинским алфавитом, и, как считалось, имела большое влияние на тюркоязычные народы.

Процесс обратного перевода языков с латиницы на кириллицу в истории получил название кириллизации. По её итогам, многие языки поменяли за 30 лет письменность аж два раза. К сожалению, процесс кириллизации был не настолько хорошо проработан, как латинизация, поэтому многие национальные языки Российской Федерации, обслуживаемые кириллицей, получили по наследству от русского языка такие символы как «я», «ю» и «ё», во многом затрудняющие запись на этих языках. В моём личном представлении гораздо проще и естественнее было бы взять опыт сербского языка и писать вместо я — ja, вместо ю — jy, вместо ё — jo, вместо э — е, а вместо самого е — je. Это внесло бы ясность в некоторые алфавитные системы на основе кириллицы даже сейчас и способствовало её укреплению среди малых народов России. Впрочем, это лишь моё мнение.

Эпоха мобильной связи и интернета

Теперь вспомним дни не такие уж и давние, а именно начало 2000-х.

Это время широкого распространения SMS-сообщений. Многие здесь наверное, ещё помнят, как пытались набрать русский текст латиницей, чтобы больше влезало. Обычно люди делились на две группы:

1. Те, кто подбирал символы латиницы, похожие на кириллические. B utore noJly4aJlocb kak-to tak, Ho 4utatb €to 6blJlo BecbMa u BecbMa Henpocto.

2. Те, кто пытался пользоваться правилами русско-английской транслитерации. Kak pokazyvala praktika, poluchalos’ u vsex po-raznomu, tak kak angliysky yazik sam lishon chetkikh pravil orfografii.

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

Где могла бы пригодиться латиница сегодня?

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

Правда, когда глядишь на современные ГОСТы по транслитерации для загранпаспортов, явно не испытываешь от такого написания ни малейшего эстетического наслаждения. Мало того, что они выглядят просто ужасно, так ещё и меняются каждые 10 лет.

Не вызывает удовольствия и текст на дорожных указателях и вывесках на улицах.

В моём личном понимании, для того, чтобы не было такого разнобоя в записях, необходимо обратиться к наработкам лингвистов 1930-х годов и создать единый вспомогательный алфавит на основе латиницы.

А что думаете вы? Нужен ли русскому языку ещё один алфавит?

Источник

Оцените статью
( Пока оценок нет )
Поделиться с друзьями
Uchenik.top - научные работы и подготовка
0 0 голоса
Article Rating
Подписаться
Уведомить о
guest
0 Комментарий
Старые
Новые Популярные
Межтекстовые Отзывы
Посмотреть все комментарии