Здравствуйте dzeso, Вы писали:
D>1. Локализация без перекомпиляции
D>2. Модифицикация библиотеки с ресурсами должна быть ПРОЗРАЧНА для всех остальных библиотек (т.е.они должны продолжать работать как бы со стандартными ресурсами)
D>Мне видится идеальным такое решение — все текстовые сообщения хранятся в текстовом файле и есть утилита которая позволяет осуществить подмену одного текста на другой... Возможно ли такое? Попадались ли примеры? Есть ли другие варианты?
Есть два других способа
1-й
ВСЕ тексты и
ТОЛЬКО тексты сообщений запихать ресурсами в DLL и потом читыть типа
HRSRC hRes;
HGLOBAL hResData;
LPSTR lpStr;
// найти ресурс с данным языком
hRes = FindResourceEx(hDLLInstance,RT_STRING,"RESOURCE NAME HERE",MAKELANGID(LangYouWant,SubLangYouWant));
// загрузить его
if (hRes != NULL)
{
hResData = LoadResource(hDLLInstance,hRes);
if (hResData != NULL)
{
lpStr = (LPSTR)LockResource(hResData);
}
}
поиск ресурса по языку идёт в порядке:
1) Language neutral
2) Thread LANGID, based on the thread's locale value
3) User default LANGID, based on the user's default locale value
4) System default LANGID, based on the system default locale value
5) US English
В принципе можно не извращатся с этим а просто добавлять к имени строки суффикс
2-й способ хранить в registry хотя Microsoft это по-моему не очень рекомендует...
и вообще это уже кажись спрашивали