Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Перевод проекта на другой язык.

1.2K
01 мая 2004 года
Kalitkin
108 / / 05.03.2004
Столкнулся с проблемой. Есть ОГРОМНЫЙ проект с бесконечным числом стрингов т.е. слов на русском языке. Проект этот надо перевести на другой язык (например на английский). Как быть? В проекте порядка 100 классов и в каждом есть стринги.
И самый главный вопрос – если я начинаю писать новый проект, то как быть со стрингами, не запихивать же их в базу данных (хотя если ничего не подскажете так и сделаю). Мне кажется, что можно сделать файл типа String table, и все слова запихивать туда(чтобы потом можно было его открыть и быстро перевести все слова на другой язык) или я ошибаюсь? Или как ни будь поступить с rc файлом? В общем, не знаю. Может, кто уже сталкивался с подобной проблемой?
Заранее всем спасибо.
1.8K
12 мая 2004 года
SeregaLBN
62 / / 03.10.2003
Пример локализации:
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()
1.8K
12 мая 2004 года
SeregaLBN
62 / / 03.10.2003
Так же всё это можно "зашить" в exe.
Перенеси все строки в ресурсы - в "String Table". Создай столько "String Table", сколько нужно тебе языков (язык указывается в свойствах "String Table").
Ну и в нужном месте вызывай ::LoadString c нужным идентификатором
Плохо другое - для ::LoadString не указывается локализация - берётся та, что указана в системе.
Так что первый метод более предпочтителен, и он кстати не зависем от ОС.
1.2K
14 мая 2004 года
Kalitkin
108 / / 05.03.2004
Цитата:
Originally posted by SeregaLBN
Так же всё это можно "зашить" в exe.
Перенеси все строки в ресурсы - в "String Table". Создай столько "String Table", сколько нужно тебе языков (язык указывается в свойствах "String Table").
Ну и в нужном месте вызывай ::LoadString c нужным идентификатором
Плохо другое - для ::LoadString не указывается локализация - берётся та, что указана в системе.
Так что первый метод более предпочтителен, и он кстати не зависем от ОС.



Спасибо!

Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог