PO-Localization #
Эта библиотека с открытым кодом призвана помочь разработчикам на C++ в создании мультиязычных приложениях Windows используя не компилируемые PO-файлы. Проект предлагает утилиту для конвертирования существующих ресурсов приложения в PO-файл. А PO-файл является родным форматом poEdit (очень полезного приложения для переводчиков).
Особенности #
- Использование poEdit для перевода
- Любой сможет переводить приложения своими силами
- Простая интеграция в MFC-приложение
Инструкции #
- Скачать и распаковать ZIP-архив последней версии.
- Скачать и установить poEdit.
- Включить файлы Localization.h и Localization.cpp из архива к вашему проекту, например, в файлы
StdAfx.h
иStdAfx.cpp
соответственно. - Добавить экземпляр класса
CLocalization
и вызовы его методовCLocalization::Load()
иCLocalization::Select()
для загрузки всех доступных переводов и выбора текущего языка. - Добавить вызовы методов
CLocalization::Translate()
для перевода диалогов и меню. - Заменить
CString::LoadString()
наCLocalization::LoadString()
для загрузки переведённых строк. - Скомпилировать ваш проект.
- Запустить утилиту exe2po из архива для вашего приложения чтобы получить начальный POT-файл (PO и POT файлы имеют одинаковый формат, но POT используется poEdit как шаблон, а PO как рабочий файл перевода):
exe2po.exe your_application.exe your_application.exe.pot
- Переименовать POT-файл в PO-файл указав идентификатор языка (Language Identifier Constants and Strings) в 2-х или 4-х знаковом шестнадцатеричном формате будущего перевода. Например
your_application.exe.09.po
для английского языка (код 0x09) илиyou_application.exe.19.po
для русского (код 0x19). - Отредактировать PO-файл в poEdit и сохранить его в папке вашего приложения.
- Запустить ваше приложение для проверки и, если нужно, повторить предыдущий шаг.
- Далее можно оставить PO-файлы с переводом как есть рядом с вашим приложением или можно встроить PO-файлы непосредственно в его ресурсы. Для этого импортируйте файлы как ресурсы “PO” (включая кавычки!) и с идентификатором ресурса равным идентификатору языка. Библиотека ищет внешние PO-файлы в первую очередь и только затем использует встроенные. Таким образом пользователи в последствии смогут помочь вам переводить приложение без перекомпиляции.
Библиотека для внутренних нужд использует библиотеку ATL для классов CString, CAtlMap и CAtlFile.
Сжатие #
Библиотека умеет загружать переводы как в несжатом, так и в сжатом виде (только алгоритмом Лемпеля-Зива). Несжатые файлы имеют расширение “.po”, а сжатые - “.p_”.
Сжимать файлы можно при помощи утилиты Microsoft File Compression Utility (compress.exe) входящей в состав любой старой операционной системы от Microsoft или в Resource Kit.
Пример использования:
compress.exe you_application.exe.09.po you_application.exe.09.p_
Сжатые файлы так же можно встраивать в ресурсы (они автоматически детектируются по магическому числу SZDD
в начале файла).
Библиотека использует WinAPI библиотеку LZExpand (Lz32.dll) для работы со сжатыми файлами.
Некоторые версии compress.exe производят некорректное сжатие (1 байт разницы), просто возьмите другую версию утилиты.
Приложения #
Список приложений, использующих данную библиотеку:
Лицензия #
Copyright © 2011-2023 Nikolay Raspopov.
Microsoft ® File Compression Utility Version 2.50
Copyright © Microsoft Corp. 1990-1994. All rights reserved.