Re: Проблема локализации проекта.
От: adontz Грузия http://adontz.wordpress.com/
Дата: 02.11.01 13:33
Оценка:
Здравствуйте 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 это по-моему не очень рекомендует...

и вообще это уже кажись спрашивали
A journey of a thousand miles must begin with a single step © Lau Tsu
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.