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


 

воскресенье, 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.

среда, 4 мая 2016 г.

Использование GPL-компонентов в коммерческой программе

Большинство программ предоставляющих возможность проверки правописания и/или орфографии обычно используют функции популярных библиотек, таких как Hunspell.
Hunspell разработан под лицензией LGPL и MPL (см. wikipedia) и внедрение ее в коммерческую программу может нарушить лицензию использования этой библиотеки.

Решил обобщить в статье LGPL, MPL и ряд других лицензий указав их как GPL-лицензия, так как она очень похожа на многие открытые лицензии и в подобных случаях советы из статьи могут подойти.

В программе «Локализатор исходного кода», как на этапе подготовки к локализации, так и на этапе проверки уже подготовленного перевода, используется проверка орфографии, которая также требует использования внешних модулей проверки орфографии.

Решил использовать внешние ресурсы, как и ряд программ (OmegaT, Audacity,..), которые предлагают пользователю самостоятельно скачать модули/ресурсы для их использования в программе.

Кроме библиотеки Hunspell в программе используются и орфографические словари, что потребует от пользователя самостоятельно скачивать их и распаковывать в каталог программы.
Такие действия затруднительны для пользователя, поэтому решил подготовить полный комплект всех необходимых файлов, как модулей из проекта Hunspell, так и файлов словарей популярных языков с сайтов OpenOffice/FireFox.
Перечисленные файлы оформил в сборник, который любой может скачать с сайта GitHub и использовать его как в этой, так и в любой другой программе.

Скачать: Сборник словарей и модулей проверки орфографии «SpellCheckPack»

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

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

Коммерческая версия программы 1.0

Выпущена коммерческая версия программы (1.0) доступная на сайте allsoft.ru

Проведено разделение программы на типы: «Корректор», «Переводчик», «Локализатор».

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

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

Проведено разделение типов версий по использованию на сервере и обычном компьютере, так как серверный функционал (взаимодействие с CI, построение отчетов JUnit и пр.) может быть не востребован у ряда разработчиков.