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


 

воскресенье, 12 июня 2016 г.

Обновление программы до версии 1.1.1

Изменения в программе:

  • Добавлена информация об установленной версии программы в отчет регистрации программы.
В связи с изменением работы программы с регистрационным ключом в версии 1.1, данное обновление позволит определить требуемый тип ключа для регистрации программы.

    пятница, 10 июня 2016 г.

    Обновление программы до версии 1.1

    Изменения в программе:

    • Добавлена поддержка форматов (только проверка правописания): MS Word (docx), MS Excel (xlsx), OOO Writer, OOO Calc, OOO Impress, RTF, FB2.
    • Добавлена поддержка формата ResW.
    • Добавлена проверка использования букв Ё/Е в слове через словари «Ё» и «Е».
    • Добавлена проверка слов кроме словаря «Ё» через словари «Е».
    • Добавлено указание «демонстрационной версии» в отчете и количество проверенных и разрешенных проверок для этой версии.
    • Добавлено указание 32/64-bit для используемой версии программы.
    • Добавлена поддержка словарей исключений LibreOffice, Opera.
    • Добавлен вывод информации о применении LibreOffice.
    • Добавлено использование словаря исключений из libreoffice.
    • Добавлена проверка файл словаря исключений из OpenOffice 3 и при его отсутствии, проверяется 4 версия OpenOffice.
    • Улучшен вывод прогресса чтения Po-файлов и обработки больших объемов информации.
    • Расширены функции чтения словарей исключений для учета браузера Opera.
    • Работа программы переведена с FrameWork 2 на FrameWork 4.5.
    • Добавлена возможность в инсталляторе указывать игнорирование «_» при проверке орфографии.
    • Внесены изменения в работу с ключом программы. Update: Выпущено обновление 1.1.1 позволяющее определить номер версии регистрируемой программы.


      воскресенье, 8 мая 2016 г.

      Негативные словари исключений (орфография)

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

      Кроме обычных словарей исключений, которые можно назвать «позитивными», так как в них указаны слова которые требуется считать правильными, существуют и «негативные» словари, слова в которых всегда неправильные.

      Негативные словари присутствуют в OpenOffice, во всяком случае при работе через API/COM
      указывается тип словаря применяемый при проверке слов.

      Фрагмент документации OpenOffice:
      http://www.openoffice.org/api/docs/common/ref/com/sun/star/linguistic2/XSearchableDictionaryList.html#queryDictionaryEntry

      queryDictionaryEntry( [in] string aWord,
      [in] ::com::sun::star::lang::Locale aLocale,
      [in] boolean bSearchPosDics,
      [in] boolean bSpellEntry );

      Parameter bSearchPosDic
          true if only positive dictionaries should be searched. false if only negative dictionaries should be searched. 

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

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

      Пример документации «Яндекс» и «Google»:

      «Очистить кэш»,  «и другие файлы, сохраненные в кеше и выберите» (https://yandex.ru/support/common/browsers-settings/browsers-cache.xml)
      «Как очистить кеш, историю просмотров и другие данные о работе в браузере»
      (https://support.google.com/chrome/answer/95582?hl=ru)

      Комплект орфографических словарей LibreOffice

      При разработке программного обеспечения, позволяющего проводить проверку орфографии в тексте, разработчики сталкиваются с вопросом — «Где взять орфографические словари?»

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

      Как вариант, решение этой проблемы, может быть в использовании набора обновляемых орфографических словарей из LibreOffice, который можно скачать с его страницы обновлений.

      Прямая ссылка на орфографические словари из LibreOffice 5.0.5: http://download.documentfoundation.org/libreoffice/src/5.0.5/libreoffice-dictionaries-5.0.5.2.tar.xz

      Примечание: предложенный ранее комплект орфографических словарей и модуля проверки орфографии (правописания) SpellCheckPack решает задачу использования hunspell-модуля и словарей основных языков, при этом для одного языка может быть использовано несколько словарей (с Ё, без Ё, из OpenOffice, из FireFox, пр.), поэтому рассмотренный комплект орфографических словарей из LibreOffice может расширить его возможности.

      суббота, 7 мая 2016 г.

      Определение используемой программы OpenOffice/LibreOffice через API

      При внедрении в программы проверки орфографии(правописания) часто используются функции популярных пакетов OpenOffice и LibreOffice.

      При работе через API-функции (COM-объекты) с пакетами OpenOffice и LibreOffice используются одни и те-же COM-объекты.

      Если необходимо указать в программе какой офис используется, то для этого можно использовать функцию получения каталога программы через следующий com-объект: com.sun.star.util.OfficeInstallationDirectories (https://wiki.openoffice.org/wiki/Программирование:_Часто_задаваемые_вопросы,  https://www.openoffice.org/api/docs/common/ref/com/sun/star/util/XOfficeInstallationDirectories.html#getOfficeInstallationDirectoryURL).

      Пример работы с функцией на Visual Basic.NET:

                          Dim tempobj As New Object
                          tempobj = CreateObject("com.sun.star.ServiceManager")

                          Dim tempobjdirectory As New Object
                          tempobjdirectory = tempobj.createinstance("com.sun.star.util.OfficeInstallationDirectories")

                          Console.WriteLine("com.sun.star.util.OfficeInstallationDirectories=" & tempobjdirectory.getOfficeInstallationDirectoryURL.ToString)

      Пример результата выполнения функции:
      «file:///C:/Program%20Files%20(x86)/OpenOffice%204»

      По содержанию «OpenOffice»/«LibraOffice» в этой строке можно определить какой именно пакет используется программой через API-функции/COM-объекты.

      Связанные статьи: OpenOffice vs LibreOffice на примере COM-объектов

      пятница, 6 мая 2016 г.

      Проблемы проверки орфографии через OpenOffice в CI Hudson и реализация проверки в Hunspell

      При вызове функции работы с com-объектом OpenOffice из программы работающий в составе задачи CI Hudson (вероятно это будет и при работе Jenkins) происходит ошибка.

      Пример:

           Private OOO_serviceManager As New Object
           ...
           OOO_serviceManager = CreateObject("com.sun.star.ServiceManager")

      Происходит ошибка создания объекта com.sun.star.ServiceManager.

      Если программу запускать вне CI Hudson, все работает отлично.

      Возможно проблемы связаны с ограничениями или правами процесса запускающего программу из CI Hudson.

      Решения пока не нашел, поэтому реализовал все через работу с Hunspell.

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

      В программе используется NHunspell.dll, Hunspellx86.dll и Hunspellx64.dll.

      Файлы можно скачать с сайта Hunspell или из пакета SpellCheckPack, который используется в программе.

      Примечание: подробней про пакет SpellCheckPack

      Все файлы dll лежат в том же каталоге что и основной файл программы!

      Пример:

                      Dim tempasm As System.Reflection.Assembly
                      tempasm = Reflection.Assembly.LoadFile(AppDir & "/NHunspell.dll")
                      ...
                      Dim temptypeHunspell As New Object
                      temptypeHunspell = tempasm.GetType("NHunspell.Hunspell")
                      ...
                      Dim temptypeSpellEngine As New Object
                      temptypeSpellEngine = tempasm.GetType("NHunspell.SpellEngine")

      Указанный пример корректно работает!

      Текущее решение проблемы работы орфографического модуля OpenOffice в среде CI Hudson является замена его на Hunspell.

      В программе «Локализатор исходного кода» используется два модуля проверки орфографии, в качестве основного модуля — «Hunspell», и вспомогательного — «OpenOffice(LibreOffice)».

      четверг, 5 мая 2016 г.

      OpenOffice vs LibreOffice на примере COM-объектов

      Программные продукты обычно используют внешние модули проверки орфографии (правописания) при этом одной из наиболее популярных программ, модули которой используются, является OpenOffice.

      Кроме уже привычного OpenOffice сейчас развивается пакет LibreOffice предоставляющий схожую функциональность.

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

      Если разработанная программа использует COM-объекты OpenOffice то будет ли она работать с LibreOffice и в чем отличия?

      «Локализатор исходного кода» изначально использовал именно COM-объекты OpenOffice и возник вопрос, что если у пользователя будет установлен вместо него LibreOffice?
      Просмотрев документацию к пакетам OpenOffice и LibreOffice в описании обращения к функциям из программ различий не обнаружил.

      Программа работает с COM-объектами LibreOffice полностью идентично как и с COM-объектами OpenOffice.

      Работа с COM-объектами

       com.sun.star.ServiceManager
       com.sun.star.linguistic2.SpellChecker
       com.sun.star.lang.Locale
       com.sun.star.linguistic2.DictionaryList

      полностью одинакова и при установленном пакете OpenOfiice и при LibreOffice.

      Решив указать в программе какой именно пакет сейчас задействован оказалось, что определить через COM-объекты это не получается.
      В программе «Локализатор исходного кода» указан OpenOffice в случае использования его COM-объектов, при этом возможно на компьютере вместо него используется LibreOffice.