Прочитал статью про адекватную латиницу, i čyo-to jyosko ḿeńa razyyebalo.
Рубрика «транслитерация»
Простая латиница для русского языка
2024-09-18 в 6:15, admin, рубрики: латинизация, латиница, транслитерация, транслитерация именЮлия → Iuliia. Всё о транслитерации
2020-04-29 в 9:13, admin, рубрики: ALA-LC, BGN/PCGN, BS 2979:1958, cyr2lat, ICAO Doc 9303, ISO 9, iuliia, open source, UNGEGN 1987, Алгоритмы, ГОСТ 7.79-2000, ГОСТ Р 52290-2004, ГОСТ Р 7.0.34-2014, интерфейсы, Программирование, транслитерация
Транслитерация — это запись кириллических слов латиницей (Анна → Anna, Самара → Samara). Её используют в загранпаспортах, водительских удостоверениях, трансграничной доставке, библиотечных каталогах и множестве других международных процессов.
Так вышло, что я недавно окунулся в эту тему, а в Википедии она раскрыта слабо. Поэтому расскажу, что к чему (спойлер — если вы думаете, что с транслитерацией всё плохо, то на самом деле всё ещё хуже).
И конечно, поскольку это Хабр — предложу open-source библиотеки для решения проблемы.
Искусство парсинга 2 или транслитерация собственной разметки
2019-03-23 в 17:36, admin, рубрики: c++, html, Алгоритмы, верстка, парсинг, разметка, транслитерация+БОНУС: как включать классы друг в друга в C++
Привет! Эта статья — прямое продолжение статьи Искусство парсинга или DOM собственными руками, где мы разобрали HTML-документ и построили на его основе абстрактное синтаксическое дерево (AST) с доступом к любому элементу через индексацию при помощи лишь стандартной библиотеки C++, проще говоря, научились самостоятельно парсить XML-подобные штуки. Напомню, что процесс парсинга, или синтаксического анализа/разбора состоит из двух этапов: лексического разбора (разбора текста на токены) и построения AST. Если первый мы рассмотрели очень подробно, с примерами и исходниками, то описание второго похоже на пустую куколку бабочки, у которой есть только оболочка, а прекрасное содержимое автор извлёк перед публикацией. На то была причина, для HTML построить дерево действительно просто, нужно всего 4 класса: пустой тег, блок, текстовый узел и корень документа, наследуемый от блока. Сегодня мы оставим такую простоту позади и построим дерево, где свойства элементов, и пустых, и блочных, будут содержаться не в атрибутах тегов, а непосредственно в классах, а для этого классов придётся создать много. Действительно много. Строить будем не из простых известных языков разметки, а создадим свой, с правилами, показанными на изображении под катом. Плюс в конце ещё переведём, или, говоря правильнее, транслитируем документ с предыдущей статьёй, размеченной нашим языком, в HTML, а в качестве бонуса я отвечу начинающим программистам C++ на тривиальный, но труднонаходимый вопрос: как включать классы «друг в друга»?
Читать полностью »
Поиск различных вариантов транслитерации русских текстов (ФИО) латиницей для выборок в MySQL
2013-11-18 в 8:31, admin, рубрики: mysql, mysql tricks, php, Регулярные выражения, транслитерация, метки: mysql, mysql tricks, PHP, транслитерация Собственно, столкнулся с банальной задачей — есть база, в которой есть масса данных ФИО, написанных латиницей. Зачастую достаточно безграмотно и непредсказуемо транслитерировано. Вроде бы и есть ГОСТ 7.79 (ISO 9), но на практике его далеко не всегда соблюдают.
Задача — есть БД с записями (как правило, ФИО) латиницей. Плохой латиницей. Требуется по русской подстроке поиска в вэб-приложении выбрать из БД (MySQL) записи, похоже транслитерированные на латиницу.
Как Яндекс сделал самую подробную русскоязычную карту мира
2013-11-12 в 8:57, admin, рубрики: Блог компании Яндекс, Геоинформационные сервисы, лингвистика, транскрипция, транслитерация, яндекс, яндекс.карты, метки: лингвистика, транскрипция, транслитерация, яндекс карты Сегодня Яндекс объявил о крупном обновлении Карт. Теперь на сервисе доступна подробная карта мира, с детализацией вплоть до домов и маршрутизацией. Все основные названия на ней представлены сразу на двух языках: местном и русском.
Кроме того, карты России, Украины, Казахстана и Беларуси теперь полностью принадлежат Яндексу.
Сервис теперь работает на единой платформе, позволяющей поддерживать и самостоятельно обновлять любые объёмы данных. Карты России, Украины, Беларуси и Казахстана обновляют картографы Яндекса каждый месяц. Все остальные страны, схемы которых нарисованы партнёром Яндекса — компанией Navteq, изменяются раз в три месяца.
Детальнее всего на части Navteq выполнены Европа и Северная Америка: со всеми основными улицами и домами в городах и подробной сетью дорог, по которым сервис умеет строить автомобильные маршруты.
Большинство топонимов на картах Navteq было записано латиницей, хотя для некоторых языков (например, тайского и арабского) использовались оригинальные алфавиты. Чтобы пользователям было легче ориентироваться, Яндекс автоматически перевёл иностранные названия городов и популярных туристических мест на русский язык. Перед нами стояла задача перевести с 37 языков более 7 миллионов топонимов из 237 стран.
В этом посте мы подробно расскажем о том, как мы выбирали методы перевода и использовали их на практике.
Читать полностью »
Скрипт транслитерации строки из кириллицы в латиницу на JavaScript с применением прототипа
2012-08-05 в 16:49, admin, рубрики: ASP.NET, html, javascript, translit, Веб-разработка, скрипт, транслитерация, метки: ASP.NET, html, javascript, translit, скрипт, транслитерация Задача: при вводе текста в одном текстовом поле («Title») нужно выводить его транслитерованное значение в другом («UserKey»), при этом в транслите допускаются только латинские буквы, цифры и тире.
Пример HTML с двумя полями:
<input id="Title" name="Title" value="" type="text" />
<input id="UserKey" name="UserKey" value="" type="text" />
Для включения транслитерации добавим следующий javascript-код на страницу:
String.prototype.translit = (function () {
var L = {
'А': 'A', 'а': 'a', 'Б': 'B', 'б': 'b', 'В': 'V', 'в': 'v', 'Г': 'G', 'г': 'g',
'Д': 'D', 'д': 'd', 'Е': 'E', 'е': 'e', 'Ё': 'Yo', 'ё': 'yo', 'Ж': 'Zh', 'ж': 'zh',
'З': 'Z', 'з': 'z', 'И': 'I', 'и': 'i', 'Й': 'Y', 'й': 'y', 'К': 'K', 'к': 'k',
'Л': 'L', 'л': 'l', 'М': 'M', 'м': 'm', 'Н': 'N', 'н': 'n', 'О': 'O', 'о': 'o',
'П': 'P', 'п': 'p', 'Р': 'R', 'р': 'r', 'С': 'S', 'с': 's', 'Т': 'T', 'т': 't',
'У': 'U', 'у': 'u', 'Ф': 'F', 'ф': 'f', 'Х': 'Kh', 'х': 'kh', 'Ц': 'Ts', 'ц': 'ts',
'Ч': 'Ch', 'ч': 'ch', 'Ш': 'Sh', 'ш': 'sh', 'Щ': 'Sch', 'щ': 'sch', 'Ъ': '', 'ъ': '',
'Ы': 'Y', 'ы': 'y', 'Ь': "", 'ь': "", 'Э': 'E', 'э': 'e', 'Ю': 'Yu', 'ю': 'yu',
'Я': 'Ya', 'я': 'ya', ' ': '-', '_': '-',
'"': '', "'": '', '.': '', ',': '', '!': '', ':': '', ';': ''
},
r = '',
k;
for (k in L) r += k;
r = new RegExp('[' + r + ']', 'g');
k = function (a) {
return a in L ? L[a] : '';
};
return function () {
var text_string = this.replace(r, k).replace(' ', '-').toString();
var literals = 'QqWwEeRrTtYyUuIiOoPpAaSsDdFfGgHhJjKkLlZzXxCcVvBbNnMm-0123456789';
var newString = '';
for (var i = 0; i < text_string.length; i++) {
if (!(literals.indexOf(text_string.charAt(i)) == -1)) {
newString += text_string.charAt(i);
};
};
return newString;
};
})();