Скрипт перевода текстов модулей 1С
В репозитории 2 скрипта выполняющие одинаковую функцию. Один написан python второй на perl, сделал для сравнения удобства разработки.
Оба скрипта работают на основе словаря, аналогичным образом с использованием регулярного выражения.
На основе файла с текстом синтаксиса помощника 1С shcntx_ru был разработан словарь dict.txt (~8000 уникальных строк).
Так же в начало словаря были добавлены фразы из языка 1С, которые не отражены в синтакссинтакс-помощнике.
Структура словаря простая:
Область - Region
КонецОбласти - EndRegion
НаСервере - AtServer
НаКлиенте - AtClient
Синтаксис командной строки у скриптов одинаковый:
python translate.py файл_перевода файл_результата
perl translate.pl файл_перевода файл_результата
первый аргумент файл_перевода исходный файл, который нужно перевести,
второй файл_результата новый файл в который будет сохранен результат замены (если второй аргумент не передавать, произойдет замена исходного файла)
если скрипт запустить с ключем -i будет открыт интерактивный ввод, куда можно вставить путь к файлу, который нужно перевести
python ./translate.py ./Module.bsl ./Module_traslate.bsl
python ./translate.py ./Module.bsl
python ./translate.py -i
скачать python:
https://www.python.org/downloads/
perl ./translate.pl ./Module.bsl ./Module_traslate.bsl
perl ./translate.pl ./Module.bsl
perl ./translate.pl -i
скачать perl:
Так же разработан скрипт, который проверяет наличие русских букв в файле:
python check_ru.py файл_проверки
perl check_ru.pl файл_проверки
node check_ru.js файл_проверки
С perl есть проблема, точнее проблема консоли windows с perl - кириллица отображается некорректно. На Linux проблем с кириллицей нет.
Если вы используете Windows, то предпочтительнее пользоваться скриптами на python.
Просьба об ошибках сообщать через Issues, а так же отправлять информацию по корректировке словаря через Issues или Pull requests.
Больше для любопытства и изучения нового реализовал алгоритм на других языках. Алгоритм и параметры командной строки у всех одинаковые.
Выполнить можно с помощью команды:
dotnet run
В релизах лежит испольняемый файл для Linux.
https://github.com/free-archer/1c-translation-script/releases/download/v1.0/sharptraslate
Сделал реализацию на Node.js. Чтобы посмотреть, как работает Node и попрактиковаться в translate.js.
Механизм работы скрипта и ключи общие. Перед запуском нужно установить Node.js https://nodejs.org/en/download/
node ./translate.js ./Module.bsl ./Module_traslate.bsl
node ./translate.js ./Module.bsl
node ./translate.js -i
Сделал замеры производительности. Переводился файл из 5000 строк. Результаты меня немного удивили:
- python - 29 секунд
- perl - 37 секунд
- c# - 1,352 секунды (1352 милисекунды)
- node - 0,558 секунды (558 милисекунды)