Rav Translate - рантайм-перевод приложений Clarion ABC на лету
Добавлено: 27 Июль 2026, 10:00
Проблема, которую решает шаблон
Если приложению на Clarion (ABC-темплейты) нужна поддержка нескольких языков интерфейса — стандартных средств для этого по сути нет. Либо вручную городить свою систему переводов и обвешивать ей каждое окно, либо сидеть на ExtractText из ABUTIL, который не даёт ни редактора, ни переключения языка на лету, ни точечных переопределений перевода.
Rav Translate — самостоятельный ABC-шаблон, который добавляет полноценный рантайм-перевод в приложение практически без участия разработчика: не нужно вручную оборачивать каждый control или переписывать существующие окна.
Что делает
При первом запуске приложения (пока не создан RAVLANG.INI) язык интерфейса определяется настройкой шаблона, а не жёстко зашит в коде. Указывается в свойствах глобального расширения Rav Translate (Application Tree → Global Extensions → Rav Translate → global part):
Поле "Язык по умолчанию при первом запуске (пока нет RAVLANG.INI)" — впишите код языка (EN, RU или любой другой), который должен использоваться при самом первом запуске приложения у конечного пользователя.
По умолчанию (если поле не менять) стоит EN.
После первого запуска выбранный язык записывается в RAVLANG.INI, и дальше приложение всегда стартует именно с ним — эта настройка шаблона больше не используется, пока RAVLANG.INI не удалят вручную.
Если приложению на Clarion (ABC-темплейты) нужна поддержка нескольких языков интерфейса — стандартных средств для этого по сути нет. Либо вручную городить свою систему переводов и обвешивать ей каждое окно, либо сидеть на ExtractText из ABUTIL, который не даёт ни редактора, ни переключения языка на лету, ни точечных переопределений перевода.
Rav Translate — самостоятельный ABC-шаблон, который добавляет полноценный рантайм-перевод в приложение практически без участия разработчика: не нужно вручную оборачивать каждый control или переписывать существующие окна.
Что делает
- Автоматически переводит все окна приложения — подписи, кнопки, заголовки колонок списков/browse, включая главное MDI Frame-окно (меню) — без единой строчки кода в самих окнах.
- Переключает язык интерфейса "на лету", без перезапуска — уже открытые окна перерисовываются сразу.
- Даёт встроенный редактор переводов: поиск по тексту, фильтр "только это окно", выбор языка (можно добавлять/удалять языки прямо из редактора), кнопка "Переводы..." доступна на любом окне.
- Поддерживает точечные переопределения — для конкретного окна и конкретного контрола можно задать свой перевод, который перекрывает общий (пример: "Наименование" переводится как "Name" везде, но в одной конкретной колонке — как "Nm.").
- Переводит произвольные строки и MESSAGE() через явный вызов (Translator.TranslateString) — и заголовок, и тело сообщения.
- Экспорт/импорт списка непереведённых строк в TSV (2 колонки: RecID + текст, сопоставление строго по RecID) — можно перевести самому спомощью переводчика (например: Google Переводчик) или прогнать через машинный перевод и вернуть обратно.
- В комплекте — три готовых Python-скрипта пакетного автоперевода (Google Cloud Translate, DeepL, Yandex Translate) с одним общим CLI-интерфейсом: экспортировал из приложения → прогнал скриптом → импортировал обратно.
- Горячая клавиша открытия редактора переводов, настраивается один раз глобально на всё приложение.
При первом запуске приложения (пока не создан RAVLANG.INI) язык интерфейса определяется настройкой шаблона, а не жёстко зашит в коде. Указывается в свойствах глобального расширения Rav Translate (Application Tree → Global Extensions → Rav Translate → global part):
Поле "Язык по умолчанию при первом запуске (пока нет RAVLANG.INI)" — впишите код языка (EN, RU или любой другой), который должен использоваться при самом первом запуске приложения у конечного пользователя.
По умолчанию (если поле не менять) стоит EN.
После первого запуска выбранный язык записывается в RAVLANG.INI, и дальше приложение всегда стартует именно с ним — эта настройка шаблона больше не используется, пока RAVLANG.INI не удалят вручную.