TsiLang Components Suite позволяет гибко выбирать, где хранить переводы и как ими управлять. Если вы разрабатываете многоязычные приложения на Delphi или C++Builder, внешние файлы переводов в форматах .SIL и .SIB помогут упростить локализацию и совместную работу.
В этой статье сравним оба формата, рассмотрим экспорт и импорт переводов, покажем загрузку файлов во время работы приложения и разберём рекомендации для реальных проектов.
Зачем нужны внешние файлы переводов?
TsiLang позволяет хранить переводы непосредственно в .DFM-файлах приложения. Это удобно для небольших проектов. Но если приложение регулярно обновляется, отдельные файлы переводов дают несколько преимуществ:
- Обновление переводов без перекомпиляции приложения
- Вынос переводов из DFM и уменьшение файлов форм
- Удобная работа с внешними переводчиками
- Использование системы контроля версий в процессе локализации
- Загрузка языковых данных во время работы приложения
Чем отличаются SIL и SIB?
TsiLang поддерживает два формата внешних файлов:
| Характеристика | .SIL — текстовый | .SIB — двоичный |
|---|---|---|
| Формат | Читаемый INI-формат | Двоичный формат |
| Редактирование | Текстовый редактор или SIL Editor | SIL Editor |
| Подходит для | Контроля версий и совместной работы с переводчиками | Поставки приложения и быстрой загрузки во время работы |
| Скорость загрузки | Ниже, чем у SIB | Очень высокая |
| Читается в текстовом редакторе | Да | Нет |
Практическая рекомендация
Во время разработки используйте .SIL: текстовый формат удобен для совместной работы и контроля версий. Перед выпуском приложения файлы можно преобразовать в .SIB, чтобы ускорить загрузку переводов.
Экспорт и импорт переводов
Откройте TsiLang Expert через меню Tools в RAD Studio, Delphi или C++Builder. Если для интерфейса TsiLang выбран русский язык, используйте следующие команды в разделе Файл:
- Экспорт
Сохранить в файл (Save to File) → Проект (Project) или Формы (Form(s)).
- Импорт
Загрузить из файла (Load from File) → Проект (Project) или Формы (Form(s)).
Переводы также можно объединять, сохраняя существующие записи и добавляя обновления.
Загрузка переводов во время работы приложения
Для загрузки внешнего файла переводов во время работы приложения рекомендуем следующий подход. Укажите путь к тому месту, где действительно находится файл:
// be sure to adjust file path to the actual file!
siLangDispatcher1.FileName := 'MyAppTranslations.sil';
// or for binary files
// siLangDispatcher1.FileName := 'MyAppTranslations.sib';
siLangDispatcher1.LoadAllFromFile(siLangDispatcher1.FileName); Сначала задаётся свойство FileName компонента TsiLangDispatcher. Благодаря этому формы, созданные позже во время работы приложения, тоже загрузят переводы из указанного файла.
Вызов LoadAllFromFile загружает переводы во все уже созданные формы приложения.
TsiLangDispatcher также обеспечивает согласованное переключение языка во всех подключённых к нему формах.
Рекомендации по работе с внешними файлами
- Храните файлы в папке относительно каталога приложения
Например, в подпапке
lang. При запуске проверяйте путь, полученный относительно каталога приложения. - Ускоряйте загрузку переводов
Используйте SIB, когда важно сократить время загрузки.
- Используйте SIL Editor
Редактор позволяет удобно изменять файлы
.SILи.SIB. Его можно бесплатно передавать переводчикам и конечным пользователям.
Наши приложения Resource Builder, HelloApp Studio, SIL Editor и Dictionary Manager используют описанный подход.
Что это даёт на практике
- Распределённая команда может работать параллельно: разработчики добавляют функции, переводчики обновляют языковые файлы.
- Заказчики и региональные команды могут исправлять переводы после выпуска, не получая доступа к исходному коду.
- SIL удобно хранить в Git, а SIB — включать в процесс подготовки выпуска приложения.
Обновляйте переводы независимо от приложения
Внешние файлы позволяют отделить работу над переводами от разработки приложения. Команда может совместно редактировать языковые версии, обновлять их без изменения исходного кода и поставлять в удобном формате — как для внутренних инструментов, так и для продуктов, предназначенных для международного рынка.
Начать можно с руководства Перевод формы Delphi с помощью ИИ: первый запуск. О том, как пользователям создавать собственные переводы, читайте в статье Создание многоязычных приложений с переводами пользователей.