PO-Localization 1.0.0.4

PO-Localization #

PO-Localization

Эта библиотека с открытым кодом призвана помочь разработчикам на C++ в создании мультиязычных приложениях Windows используя не компилируемые PO-файлы. Проект предлагает утилиту для конвертирования существующих ресурсов приложения в PO-файл. А PO-файл является родным форматом poEdit (очень полезного приложения для переводчиков).



Скриншот программы на английском Скриншот программы на русском

Особенности #

  • Использование poEdit для перевода
  • Любой сможет переводить приложения своими силами
  • Простая интеграция в MFC-приложение

Инструкции #

  1. Скачать и распаковать ZIP-архив последней версии.
  2. Скачать и установить poEdit.
  3. Включить файлы Localization.h и Localization.cpp из архива к вашему проекту, например, в файлы StdAfx.h и StdAfx.cpp соответственно.
  4. Добавить экземпляр класса CLocalization и вызовы его методов CLocalization::Load() и CLocalization::Select() для загрузки всех доступных переводов и выбора текущего языка.
  5. Добавить вызовы методов CLocalization::Translate() для перевода диалогов и меню.
  6. Заменить CString::LoadString() на CLocalization::LoadString() для загрузки переведённых строк.
  7. Скомпилировать ваш проект.
  8. Запустить утилиту exe2po из архива для вашего приложения чтобы получить начальный POT-файл (PO и POT файлы имеют одинаковый формат, но POT используется poEdit как шаблон, а PO как рабочий файл перевода): exe2po.exe your_application.exe your_application.exe.pot
  9. Переименовать POT-файл в PO-файл указав идентификатор языка (Language Identifier Constants and Strings) в 2-х или 4-х знаковом шестнадцатеричном формате будущего перевода. Например your_application.exe.09.po для английского языка (код 0x09) или you_application.exe.19.po для русского (код 0x19).
  10. Отредактировать PO-файл в poEdit и сохранить его в папке вашего приложения.
  11. Запустить ваше приложение для проверки и, если нужно, повторить предыдущий шаг.
  12. Далее можно оставить 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 байт разницы), просто возьмите другую версию утилиты.

Приложения #

Список приложений, использующих данную библиотеку:

Лицензия #

Apache License 2.0

Copyright © 2011-2023 Nikolay Raspopov.

Microsoft ® File Compression Utility Version 2.50
Copyright © Microsoft Corp. 1990-1994. All rights reserved.