Программа - переводчик электронных карт (TranslateDBF.exe)

Программа переводит электронные карты с английского языка на русский.

Загрузить TranslateDBF.zip (бета-версия)

Предыстория

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

Формат векторной карты, которую я решил использовать, был «shape/dbf» (один из самых распространенных). Практически все настольные ГИС-приложения позволяют осуществлять операции импорта и экспорта в этот формат и своих собственных форматов. Оказалось, что формат файлов dbf (dBase), в которых и хранятся семантические данные векторной карты,  открытый и, более того, существует открытый программный код для чтения и записи этого формата на моем «родном» C#.

Для перевода я пробовал использовать базу данных GeoNames, но оказалось, что в ней много пробелов в части русских названий. В итоге я нашел более универсальное решение – использовать веб-сервисы перевода. Это оказалось не сложно, поскольку программный интерфейс веб-сервисов перевода Google и Microsoft (BING) хорошо описан и эти сервисы бесплатны (на данный момент).

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

Описание программы TranslateDBF

Установка

Для работы программы требуется платформа Microsoft .Net Framework v.2.0, которую можно загрузить с официального сайта (Microsoft .NET Framework 2.0). На данный момент установщика нет, поэтому нужно просто распаковать архивный файл TranslateDBF.zip
с программой в любое место и запустить TranslateDBF.exe.

Интерфейс

Внешний вид окна программы показан на рисунке.

 
 

Технология перевода

1.       Выбираем файл dbf для перевода (кнопка «выбрать файл»). Программа спросит какие столбцы нужно переводить. Если есть сомнения относительно выбора столбцов можно открыть файл для просмотра содержащейся в нем таблицы (кнопка справа - с изображением таблицы). Если в файле кроме латиницы есть и русские записи, то нужно подобрать правильную кодировку: выбрать из списка WIN=1251 или DOS=866.

2.       Далее настраиваем процесс перевода:

  • Указываем: нужно ли выполнять предварительный перевод отдельных слов перед обращением к веб-переводчику (для исключения неверного перевода часто встречающихся многозначных слов, так например, Google зачастую переводит mount как КРЕПЛЕНИЕ вместо ГОРА). При предварительном переводе используется словарь basedict.txt. Слова меняются только при полном совпадении (целиком), поэтому иногда требуется забить в basedict.txt варианты для разных падежей и для множественного числа.
  • Указываем локальный словарь,  который является локальным кэшем переведённых автоматическим веб-переводчиком фраз и хранится в рабочем каталоге программы как простой текстовый файл. Каждая строка этого файла разделена через символ табуляции на две части: первая – исходная запись на английском, вторая – ее русский перевод и его можно править в любом текстовом редакторе. Локальный словарь решает две задачи: ускоряет перевод и повышает его качество. Ускорение достигается за счет того, что обращение к локальному словарю происходит практически мгновенно по сравнению с временем обращения для перевода к веб-сервису. Кроме того, в семантических таблицах зачастую многократно повторяются одни и те же словосочетания, перевод которых достаточно получить один раз, а затем просто подставлять везде, где таковые встречаются. Повышение качества требует выполнения циклов перевода (об этом ниже).
  • Указываем веб-переводчик: BING или Google. У меня BING чаще давал более качественный результат, но не всегда.
  • Указываем нужно ли выполнять транслитерацию непереведенных слов. Если выбрать веб-переводчик = None, и разрешить транслитерацию, то перевод всех новых фраз (не встречающихся в выбранном локальном словаре или в basedict.txt) будет выполнен методом транслитерации. Правила транслитерации описаны в файле translit.txt. В файле три раздела: начало, конец и прочее. В процессе транслитерации каждого слова сначала проверяются на совпадения группы символов  в начале и в конце слова, а затем в середине (при этом используется соответствующая часть таблицы транслитерации: начало, конец и прочее).
  • Указываем вариант сохранения перевода – по сути, отвечаем на вопрос: в как обозвать столбцы таблицы, в которых будут сохраняться переведенные словосочетания и что делать с английским вариантом (стереть или оставить).
  •  Указываем кодировку результирующего файла : выбрать из списка WIN=1251 или DOS=866).

3.       Жмем кнопку «Перевести!». Программа читает указанный файл DBF, переводит с использованием выбранного веб-сервиса перевода и локального словаря все поля в указанных столбцах с английского языка на русский, а затем сохраняет файл с результатами перевода. После завершения перевода программа предложит сохранить созданный (дополненный) локальный словарь в файл. При выполнении перевода программа может обращаться к веб-сервисам перевода, поэтому требуется подключение к интернету. Можно сохранить в файл весь локальный словарь или только часть записей, которые были добавлены в ходе последнего перевода и выбрать имя для нового словаря. Если словарь с таким именем существует, то программа сделает копию старого словаря с расширением BAK, а затем запишет в него новое содержание. ВАЖНО: При сохранении результатов исходный файл DBF не затирается, а сохраняется под новым именем вида «*.dbf.оригинальный» и используется при повторных циклах перевода. Исходный файл всегда можно восстановить из резервной копии, для этого даже сделана кнопочка «Восстановить».

 

Для повышения качества перевода необходимо сделать следующее:

- После первичного перевода (с пустым или уже существующим, но неполным словарем) сохраняем полученный словарь.

- Редактируем словарь вручную (часто ошибки в падеже, иногда бывают непереведенные слова). Словарь можно открыть в «текстовом редакторе по умолчанию» или в Word (кнопки справа от поля с именем файла словаря).

- Выполняем повторный перевод (выполнится быстро, поскольку обращений к веб-сервису делать уже не потребуется).

Технические тонкости:

При записи файла строковые поля сохраняются в русской кодировке (DOS или Windows по выбору пользователя), но дата (время) и вещественные числа сохраняются в формате принятом в США «en-US» (для совместимости с существующими GIS-приложениями).

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

Пример выполнения перевода (карты мира)

Фрагмент исходной карты:

 

Фрагмент переведенной карты:

P.S. ошибки в названиях наверняка есть – я не географ :)

Конструктор сайтовuCoz