Перевод проекта на другой язык.
И самый главный вопрос – если я начинаю писать новый проект, то как быть со стрингами, не запихивать же их в базу данных (хотя если ничего не подскажете так и сделаю). Мне кажется, что можно сделать файл типа String table, и все слова запихивать туда(чтобы потом можно было его открыть и быстро перевести все слова на другой язык) или я ошибаюсь? Или как ни будь поступить с rc файлом? В общем, не знаю. Может, кто уже сталкивался с подобной проблемой?
Заранее всем спасибо.
1. Созай текстовые файлы, например English.lng, Russian.lng след. содержания:
1=Имя программы
2=Применить
3=Отменить
4=Ошибка
...
2. Создай в проекте .h файл:
#define IDS__PROGRAMM_NAME 1
#define IDS__OK 2
#define IDS__CANCEL 3
#define IDS__ERROR 4
...
3. Создай глобальную переменную
std::map<int, string> g_StrArr;
4. При старте проги читай соотв *.lng файл и заполняй переменную g_StrArr.
5. Ну и всё - там где в проекте всречаются строки, заменяй на
g_StrArr[IDS__...].c_str()
Перенеси все строки в ресурсы - в "String Table". Создай столько "String Table", сколько нужно тебе языков (язык указывается в свойствах "String Table").
Ну и в нужном месте вызывай ::LoadString c нужным идентификатором
Плохо другое - для ::LoadString не указывается локализация - берётся та, что указана в системе.
Так что первый метод более предпочтителен, и он кстати не зависем от ОС.
Цитата:
Originally posted by SeregaLBN
Так же всё это можно "зашить" в exe.
Перенеси все строки в ресурсы - в "String Table". Создай столько "String Table", сколько нужно тебе языков (язык указывается в свойствах "String Table").
Ну и в нужном месте вызывай ::LoadString c нужным идентификатором
Плохо другое - для ::LoadString не указывается локализация - берётся та, что указана в системе.
Так что первый метод более предпочтителен, и он кстати не зависем от ОС.
Так же всё это можно "зашить" в exe.
Перенеси все строки в ресурсы - в "String Table". Создай столько "String Table", сколько нужно тебе языков (язык указывается в свойствах "String Table").
Ну и в нужном месте вызывай ::LoadString c нужным идентификатором
Плохо другое - для ::LoadString не указывается локализация - берётся та, что указана в системе.
Так что первый метод более предпочтителен, и он кстати не зависем от ОС.
Спасибо!