psilogic: (Default)
psilogic ([personal profile] psilogic) wrote2010-08-16 06:21 pm
Entry tags:

Localizer 2.0

Мой локализатор стал еще более монстроидальным :)

"Родил" новую версию 2.0.

В ней нового:
- поддержка проектов Visual Studio 2003-2010
- поддержка сложных сборок с исходниками, разбросанными по разным папкам, не обязательно сборка "студией"
- поддержка Unicode-локализаций
- поддержка Qt-локализаций
- поддержка загрузки локализации из ресурсов
- папка с готовыми примерами
- перевод хэлпов на английский

Итого теперь есть 4 варианта локализации: ANSI (UTF8), Unicode, Qt, .rc/.rh файлы. В исходниках локализованные строки выглядят как переменные типа extern const char*, extern const wchar_t*, extern QString.

[identity profile] thedeemon.livejournal.com 2010-08-16 05:46 pm (UTC)(link)
Клево! Особенно за подробную документацию респект.

>Пометьте этим префиксом все строки, подлежащие локализации

Вот это, как и в случае с gettext'ом, самый задалбыващий пункт, если уже существующий проект интернационализировать. Я как раз для этого себе трансформер с++ исходников на окамле сделал, который понимал всякие "строка", T("еще"), _T("еще"), L"и еще" и все, кроме последнего, заменял на ТТ("строка") - мой макрос, а L"строки" оставлял, ибо там только сильно служебные вещи были. При этом еще отчет генерил, где все уникальные строки обоих типов приводил, дабы можно было переводить. Правда, после такой автоматической конвертации пришлось около половины строк менять на L"..." как не подлежащие переводу.

[identity profile] psilogic.livejournal.com 2010-08-16 06:22 pm (UTC)(link)
Да, когда проект еще не локализован, это еще та бодяга. Поэтому первая функция, которую я сделал для localizer-а - это как раз автоматическая расстановка префиксов:

localizer -mark <префикс> +мояпроекта.vcproj

Ну а потом об этом голова уже не болела, префиксы ставил и шел дальше, зная, что можно не торопиться с локализацией, но ничего и не забудется.

[identity profile] thedeemon.livejournal.com 2010-08-17 05:45 am (UTC)(link)
-mark _T("aa") превратил в _T( LS"aa"), а L"string" в L LS"lstring". Нехорошо.

[identity profile] psilogic.livejournal.com 2010-08-17 08:39 am (UTC)(link)
Нормально, с этими строками все равно надо что-то делать, но что именно - неочевидно. Пометки по крайней мере привлекут к ним внимание.