Замена слов в браузере

Обновлено: 07.07.2024

БлогNot. Пишем "Добрый браузер правды" или замена слов на загружаемых веб-страницах

Пишем "Добрый браузер правды" или замена слов на загружаемых веб-страницах

Первым массово известным продуктом такого рода был "добрый браузер правды" от Навального и Ко, так что это не какая-то свежая аналогия :) Суть дела, думаю, понятна - как сделать так, чтобы на всех загружаемых страницах одни слова могли заменяться на другие в соответствии с неким словарём или списком. При этом хотелось бы, чтоб замены были достаточно гибкими, например, умели учитывать падежные конструкции русского языка и РеГиСтР символов.

Попробуем разработать такое приложение, а точней, расширение для "Хрома", "с нуля".

Файл манифеста manifest.json будет совсем типовым:

В нём дополнительно указано, что замены делаются до конца документа ( document_end ). Кодировка этого и остальных файлов - Юникод (UTF-8).

Картинки icon32.jpg и icon128.jpg соответствующих размеров я нарисовал в Paint, приводить их здесь незачем, а главный файл script.js мы сейчас напишем.

Функцию для рекурсивного обхода всех узлов документа я банально скоммуниздил вот отсюда:

Достаточно единственного глобального вызова этой функции, чтобы обход заработал:

Будет не так скучно, если некоторые замены мы сделаем вариативными, то есть, слово для замены будет случайно выбираться из списка вариантов. Поможет в этом маленькая функция randomWord :

Осталось написать функцию replaceMe , которая выполнит всю работу. Она будет устроена так:

Сами замены сделаем с помощью метода Javascript replace, который "понимает" не только тупую замену слова на слово, но может работать и с регулярными выражениями, обеспечивающими должную гибкость поиска словоформ.

Если Вы знакомы с RegExp'ами, то будет совсем легко, если нет - помогут показанные ниже простые примеры.

1. Просто меняем слово на слово, второе слово может иметь несколько вариантов

Здесь слова для замены склоняются так же, как искомое, учёт падежей излишен. Ключ /g после строки поиска нужно указывать обязательно, если требуются замены всех вхождений. Если к ключу добавить ещё символ i - будет игнорироваться регистр символов при поиске ( /gi )

2. Замена целых словосочетаний

$1, . $5 - номера вхождений подшаблонов в круглых скобках, эти подшаблоны можно ставить потом в строку для замены. Мы берём из исходной строки окончание первого слова $2 , пробельные разделители $3 и окончание второго слова $5 , так что получается всё корректно;

(ая|ой) - альтернатива; конструкцию (. |. ) можно вкладывать произвольное количество раз. В ней легко учесть отличающиеся части слов;

(\s) - пробельные символы.

3. Применяем подшаблоны и замену по списку одновременно

Обратите внимание, что второй подшаблон может быть и пустым - (|а|е|у) , это обеспечит нормальную замену для именительного падежа.

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

4. Замена только в начале слова

^ - контроль начала слова. Слово "думский" будет обработано, а, к примеру, фамилия "Стародумский" - нет.

Здесь первая буква "Шпанского комитета" принудительно станет большой.

Если хотим, чтоб замены оставляли регистр первой буквы искомого слова "как есть", придётся часть выражений дублировать:

Это относится и к остальным пунктам.

Стоит сказать, что конструкция \b , использующаяся для обозначения границы слова, не работает с кириллицей (или работает как-то криво), хотя границу слова, написанного латинскими буквами, определяет. Может пригодиться также спецсимвол $ , обозначающий конец слова.

Пополнив списки по этим несложным шаблонам, вы сможете сделать собственный комфортный для вас лексикон своему браузеру :)

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

P.S. из 2021-го. К сожалению, в актуальных версиях Firefox скачанное с этой страницы и установленное из файла расширение непосредственно работать уже не будет из-за изменения требований к служебным файлам. Хотя, наверное, несложно было бы модифицировать.

Проверил также удалённо в "Хромом" актуальной версии 88 - всё работает (скачать архив, распаковать без создания папки любым архиватором, в браузере обратиться Настройки - Расширения, разрешить "режим разработчика", потом "Загрузить распакованное расширение", показав на папку).


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

Примечание: в тексте представлены расширения для Google Chrome и Mozilla Firefox, потому что я пользуюсь лишь этими браузерами. Не все упомянутые продукты имеют версию для обоих браузеров.

Linguix


Из фич, которые нравятся – модуль расчета статистики. Система анализирует «читабельность» текста и говорит, насколько он сложен. Полезно, чтобы бороться с соблазном сделать текст слишком громоздким.


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

Writer

Мастхэв-приложение для всех, кто работает с текстами на английском с помощью браузера. Это расширение позволяет открыть в Chrome крайне удобный, гибко настраиваемый и не отвлекающий редактор. Выглядит очень круто:


В редакторе работает Linguix – так что можно сразу же искать ошибки

Из удачных решений – расширение автоматически сохраняет текст время от времени. Можно задавать цели, легко получать статистику о количестве символов в тексте и т.п. Несмотря на то, что у приложения есть отдельная страница в магазине расширений Chrome, по факту она редиректит на веб-версию сервиса, и пользоваться ей можно из любого браузера.

Google Dictionary

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


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

Dark Reader

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

Надо ли говорить, что большинство веб-редакторов текстов представляют из себя яркие белые страницы, на которых появляются черные буквы. В темноте это крайне серьезная нагрузка на зрение, поэтому я пользуюсь расширением DarkReader. Он затемняет фон на веб-страницах, так что с ними гораздо приятнее работать в вечернее время. К примеру, вот как с этим расширением выглядит блог-платформа Medium:


StayFocusd


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

А какие полезные в деле работы с текстом браузерные расширения знаете вы? Делитесь ссылками в комментариях. Спасибо за внимание!

Читайте также: