===================================================================== AJPapps - Dic sync 2.03 Линда Кайе 2011-2021. Посвящается Ариэль ===================================================================== Эта программа поможет синхронизировать пользовательские словари в разных программах вроде Microsoft Office, FocusWriter и Pidgin, после чего слово, добавленное в одной программе, уже не будет считаться ошибочным в других. История создания ---------------- Для написания рассказов я использую сразу несколько программ: FocusWriter, Notepad2, Word (в нём я проверяю текст после Блокнота). А ещё есть куча других программ, в которых встроена проверка орфографии. И вот однажды я заметила, что добавляю в словарь каждый раз одни и те же слова, только в разных программах. Что делать? Проверять в одной программе? А если это аська? Не копировать же текст каждый раз в Ворд. Решение есть! Большинство программ держат пользовательские словари в текстовых файлах. Достаточно лишь написать программу, которая их синхронизирует: соберёт все слова со всех словарей и раскидает общий список. За пару дней была написана довольно простая программа, код синхронизации занял не больше часа, а вот интерфейс я переписывала три раза. Страшно вспоминать ^^ История изменений ----------------- • 1.00.0007 Первый публичный релиз. • 1.00.0013 [+] Значительно повышена скорость работы программы. • 1.00.0018 [-] При чтении пустого файла словаря возникала ошибка. • 2.00.0020 [+] Полностью переделан интерфейс программы. [+] Синхронизация может выполняться через командную строку. [+] Список слов теперь редактируется в программе, ассоциированной с текстовыми файлами. • 2.01.0022 [+] В логе выводится информация о пропущенных файлах. [+] Ограниченная поддержка словарей Hunspell. • 2.01.0024 [23.05.2020] [-] При сортировке списка слов, одинаковые слова в разном регистре больше не скачут туда-сюда. [+] Обновлены библиотеки. • 2.02.0026 [23.05.2020] [+] Более гибкая настройка словарей: можно указать кодировку, BOM, порядок байтов и тип переноса строк. [+] Справка теперь вызывается из программы по нажатию F1. • 2.02.0028 [23.05.2020] [-] При чтении пустых словарей в кодировке UTF-16 BE, программа сообщала об ошибке. Не смертельно, но неприятно. [-] Приведены в порядок подсказки на кнопках (оказывается, они там были). [-] Приведены в порядок горячие клавиши (оказывается, они тоже были). • 2.03.0032 [17.05.2021] [+] Добавлена полная поддержка словарей OpenOffice.org. [+] Немного подправлен интерфейс диалога управления словарями. • 2.03.0033 [22.06.2021] [-] Если словарь OpenOffice.org не содержал слов, программа считала это ошибкой парсинга. Зависимости ----------- Для работы этой программы нужны следующие компоненты: • AJPapps - AJPapps support library 1.00 Файл AJPappsSupport0100.DLL • AJPapps - AJPapps support library FBE 1.00 Файл AJPappsSupportFBE0100.DLL • AJPapps - Common dialogs library 1.00 Файл CommonDialogs0100.DLL • AJPapps - File I/O support 1.04 Файл FileIOSupport0104.DLL • AJPapps - Sort 3.00 Файл Sort0300.DLL • AJPapps - Библиотека общих функций 3.04 Файл CommonFunctions0304.DLL • Microsoft Visual Basic Virtual Machine Файл MSVBVM60.DLL Эти компоненты обязательны. Они уже включены в программу установки ^_^ Важное замечание ---------------- В программе используются иконки из набора Fugue Icons. Copyright (C) 2011 Yusuke Kamiyamane. All rights reserved. The icons are licensed under a Creative Commons Attribution 3.0 license. If you can't or don't want to provide a link back, please purchase a royalty-free license. Информация о разработке ----------------------- Язык: Microsoft Visual Basic 6.0 SP6 Платформа: Windows XP Professional SP3 Установка --------- Просто запустите Setup.DicSync.EXE, и программа установки сама создаст все необходимые ярлыки. Использование ------------- Программа использует внутренний список слов, который накапливается чтением словарей других программ. Этот список впоследствии копируется в каждый прочитанный словарь, таким образом, делая набор слов-исключений у каждой программы одинаковым. Так работает синхронизация. После запуска программы появляется окно с несколькими кнопками, при помощи которых осуществляется процесс синхронизации. В предыдущих версиях здесь был список слов, который можно было редактировать, но начиная с версии 2.00, этот список редактируется в текстовом редакторе по умолчанию. Для этого достаточно нажать кнопку "Слова". Формат внутреннего списка слов очень прост: одна строка, одно слово. Сам файл хранится в кодировке Unicode (UTF-16), переносы строк - CRLF. Пустые строки игнорируются. Кнопка "Словари" открывает список словарей для редактирования. Подробнее об этом читайте в следующем разделе. Кнопка "Дополнить" (F5) последовательно читает все файлы словарей, собирает из них слова и сохраняет их в общей базе слов. При этом повторы отбрасываются, и программа сообщает, сколько новых слов добавилось в базу. Кнопка "Выгрузить" дополняет словари словами из базы. После нажатия программа последовательно перезаписывает все файлы словарей новым списком слов-исключений. При этом перед перезаписью сохраняется резервная копия каждого файла, а если это не удалось, словарь программа не трогает. Кнопка "Выход" просто закрывает окно. Иными словами, при обычном использовании программы её следует запустить, нажать кнопку "Дополнить", дождаться сообщения об успехе, а затем нажать кнопку "Выгрузить". После этого словари будут синхронизированы. Очень важно понимать, что, если с последней выгрузки в словарях появились новые слова, а дополнение сделано не было, то при очередной выгрузке эти слова пропадут. Возможен сценарий, когда в словарях какое-то слово оказалось по ошибке, и его нужно удалить. Для этого достаточно, после нажатия кнопки "Дополнить", открыть список слов кнопкой "Слова" и удалить ненужные. После этого список нужно сохранить и закрыть. Теперь можно нажать "Выгрузить". Ненужные слова будут удалены из всех словарей. Список словарей --------------- После нажатия на кнопку "Словари" открывается диалог настройки списка файлов словарей. Программа сама не ищет их, так что тут вам придётся выбрать их самостоятельно (в следующем разделе я подскажу, где они могут быть). Кнопка "Добавить" (Ins) открывает диалог выбора файлов (можно указать более одного), а кнопка "Удалить" (Del) удаляет выбранные файлы из списка. Ctrl+A выделяет все словари в списке. После добавления файлов, новые будут выделены, так что вы сразу сможете указать их параметры (кодировку и прочее) - делается это при помощи выпадающих списков справа. Обратите внимание, что программа автоматически это не делает - всё на совести пользователя. Когда всё будет готово, жмите Ok, и начинайте синхронизироваться! Где все эти файлы? ------------------ Здесь я дам несколько подсказок относительно расположения файлов словарей в разных программах. Word. Обычно файл словаря называется Custom.DIC, записывается в ANSI кодировке, и располагается в Application Data. Например, у меня в Windows XP путь к нему выглядит примерно так: C:\Documents and Settings\lk\Application Data\Microsoft\Proof\CUSTOM.DIC Также можно посмотреть путь к нему в настройках самого Ворда - ищите раздел проверки правописания. FocusWriter. Файл называется personal (без расширения) и записывается в UTF-8. Тут два варианта. Если у вас обычная установка, файл будет где-то здесь: C:\Documents and Settings\lk\Application Data\GottCode\FocusWriter\Dictionaries\personal В случае же портабельной установки, ищите его в подкаталоге Data каталога с программой. Например, у меня это выглядит так: Y:\Utils\FocusWriter\Data\Dictionaries\personal Pidgin. Тут всё гораздо сложнее. Даже при портабельной установке, файл словаря хранится в Application Data. Он может называться как угодно, но имеет расширение DIC. Его кодировка - UTF-8 без BOM. Вот, например, у меня он обнаружился под таким именем: C:\Documents and Settings\lk\Application Data\enchant\ru.dic Mozilla Firefox, SeaMonkey, PaleMoon, Serpent etc. У этих броузеров словарь хранится в файле persdict.dat, расположенном в каталоге профиля. Его кодировка - UTF-8 без BOM. Путь к нему выглядит как-то так: C:\Documents and Settings\lk\Application Data\Mozilla\SeaMonkey\Profiles\1241.mermay\persdict.dat В поисках словарей вам может помочь такой приём. Вы пишете случайный набор букв (например, "лоывимоывиывдмтд") и вносите его в словарь. Далее вы нажимаете Пуск > Выполнить и вводите в появившемся окне "%USERPROFILE%". Открывается папка с вашим пользовательским профилем. Жмём "Поиск" и ищем по внесённой в словарь комбинации (поле "Имя файла" оставляем пустым). Поддерживаемые форматы ---------------------- На данный момент программа поддерживает работу с файлами такого формата: • Каждое слово находится на отдельной строке. • Комментарии начинаются с символа #. • Пустые строки допускаются. Поддерживаются следующие кодировки: • ANSI • UTF-8 • UTF-16 Big Endian • UTF-16 Little Endian • KOI8-R (Hunspell, см. ниже) При выгрузке слов в словарь, возможны следующие преобразования: • Слова будут отсортированы по алфавиту с учётом регистра. • Комментарии пропадут. • Пустые строки пропадут. • Пробелы перед и после слов так же будут срезаны. Внимание! Некоторые программы хранят в комментариях служебную информацию, но обычно работают и без неё. Это относится, например, к словарям Microsoft Office, где в комментариях может быть служебная информация вроде языка словаря. Формат Hunspell --------------- Отдельно стоит формат, указанный как "Hunspell". Это формат пользовательского словаря одноимённого движка проверки орфографии. Его использует, например, Notepad++. Текст в таких словарях содержится в кодировке KOI8-R, также там присутствует кое-какая служебная информация. В отличие от словарей других форматов, в этом не всегда сохраняется регистр символов ("AJPapps" превращается в "Ajpapps"), что может вызвать конфликт с другими программами. Поэтому Dic Sync лишь частично поддерживает данный формат. Программа перезаписывает такие словари синхронизируемыми данными, но не читает новые слова из них. Поэтому любые слова, которые вы добавите в том же Notepad++ в исключения, пропадут при следующей синхронизации. Синхронизировать словари Hunspell рекомендуется только если нет необходимости добавлять исключения из программ, их использующих. Например, если вы используете Notepad++ только для того чтобы по-быстрому поправить пару файлов, а также сделать глобальную замену в куче файлов, попутно постреляв ошибки, то имеет смысл синхронизировать словарь этой программы. Если же Notepad++ - один из основных текстовых редакторов, и при проверке орфографии часто добавляются исключения, то синхронизировать словарь не стоит. Окно сообщений -------------- Все сообщения программа выдаёт в цветастом окошке "Сообщения". Если во время выполнения некой операции произошли ошибки, то текст будет жёлтым на красном фоне. Если же всё прошло хорошо, то текст будет зелёным на тёмно-зелёном фоне. Обратите внимание, что красный фон не всегда означает полный провал операции. Например, если при обновлении словарей не удалось создать резервную копию какого-то файла, то итоговое сообщение будет красным, даже если все остальные словари обновились успешно. В общем, читайте сообщения внимательно. Если программа выполнялась без интерфейса с некими параметрами командной строки, то все эти сообщения будут появляться в журнале сообщений Windows. Командная строка ---------------- Помимо интерактивного режима в версии 2.00 был добавлен неинтерактивный режим, в котором программа не показывает никакого интерфейса и записывает все сообщения в системный журнал событий. Например, это может пригодиться для автоматизации синхронизации, когда лень постоянно запускать программу. Достаточно добавить вызов программы с одним из перечисленных ниже ключей в планировщик заданий так, чтобы задача запускалась, скажем, каждый час. • DicSync.EXE /Collect - эквивалентно нажатию кнопки "Дополнить" главном окне программы. • DicSync.EXE /Update - эквивалентно нажатию кнопки "Выгрузить" главном окне программы. • DicSync.EXE /Combo - делает оба предыдущих действия за один запуск. Рекомендую этот способ. При этом настройка словарей по-прежнему делается в основном окне программы. Синхронизация на нескольких компьютерах --------------------------------------- Если ситуация усложняется не только наличием нескольких программ, но также и наличием нескольких компьютеров, то она решается достаточно просто. • Если все компьютеры связаны сетью, то можно расшарить какую-нибудь папку на одном из компьютеров и создать там файл, например, Sync.DIC. Потом вы добавляете его как словарь на каждом компьютере в настройках Dic Sync и синхронизируете словари до достижения полной синхронности ^^ • Можно такой словарь поместить на флэшку, и носить его, скажем, между домашним и рабочим компьютерами. Разумеется, его так же придётся добавить и там, и там. • От флэшки можно избавиться при помощи Дропбокса или подобного сервиса синхронизации - просто поместите файл в какую-нибудь папку в каталоге программы и добавьте его на каждом компьютере. Удаление -------- Удаление производится обычным способом - через Установку и удаление программ. При этом файл данных не удаляется. Файл находится в Application Data. Маленький копирайт ------------------ 1. Программа распространяется бесплатно. 2. Вы имеете право распространять её на тех же условиях. 3. При распространении вы не имеете права менять авторство программы, присваивать его себе или каким-либо иным способом искажать его. 4. Разрешено коммерческое использование программы (в офисе, на производстве) за исключением её платного распространения или сдачи в аренду. 5. Программа распространяется как есть. Автор не несёт ответственности за любые трагедии или несчастные случаи, вызванные использованием программы. 6. Вы имеете право использовать ActiveX компоненты, поставляемые с программой, в собственных программах. При этом автор не гарантирует совместимость будущих версий компонентов. 7. Для любого пункта данного соглашения может быть сделано исключение с разрешения автора программы. 8. По любым вопросам, связанным с данной программой, обращайтесь по адресу lindaoneesama@gmail.com Контакты -------- Почта: lindaoneesama@gmail.com Сайт: https://www.lindachan.net