Ragnarok Online


PO-Localization 1.0.0.4

PO-Localization

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


Файлы Поддержка Исходники


Особенности

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

Инструкции

  1. Скачать и распаковать ZIP-архив последней версии.
  2. Скачать и установить poEdit.
  3. Добавить Localization.h и Localization.cpp из архива к вашему проекту, например, в файлы StdAfx.h и StdAfx.cpp соответственно.
    • Добавить экземпляр класса CLocalization и вызовы его методов CLocalization::Load() и CLocalization::Select() для загрузки всех доступных переводов и выбора текущего языка.
    • Добавить вызовы методов CLocalization::Translate() для перевода диалогов и меню.
    • Заменить CString::LoadString() на CLocalization::LoadString() для загрузки переведённых строк.
  4. Скомпилировать ваш проект.
  5. Запустить утилиту exe2po из архива для вашего приложения чтобы получить начальный POT-файл:
    "exe2po.exe your_application.exe your_application.exe.pot"

    PO и POT файлы имеют одинаковый формат, но POT используется poEdit как шаблон, а PO как рабочий файл перевода.

  6. Переименовать POT-файл в PO-файл указав идентификатор языка (в 2-х или 4-х знаковом шестнадцатеричном формате) будущего перевода. Например "your_application.exe.09.po" для английского языка (код 0x09) или "you_application.exe.19.po" для русского (код 0x19).
  7. Отредактировать PO-файл в poEdit и сохранить его в папке вашего приложения.
  8. Запустить ваше приложение для проверки и, если нужно, повторить предыдущий шаг.
  9. Далее можно оставить 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 байт разницы), просто возьмите другую версию утилиты.

Приложения

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

Копирайты

Microsoft (R) File Compression Utility Version 2.50

Copyright (C) Microsoft Corp. 1990-1994. All rights reserved.

Метрики кода


© Николай Распопов