Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Как локализовать приложение? [D6]


Alxd ©   (2003-01-02 22:46:00) 

Нужно локализовать приложение так же, как это сделано в FlashGet, т.е. *rus.ini файл будет содержать все текстовые строки и сообщения используемые программой.
Все осложняется тем, что программа состоит из двух модулей. Один написан на VC, а другой на D6 (так надо, по другому никак).
Решение вижу примерно следующее:
1. написать весь код локализации в D6.dll.
2. экспортировать функции из d6.dll в vc.dll (условно).
3. использовать экспортируемые функции по всей программе, где надо.
ОДНАКО! Как все это сделать? С чего начать или от чего оттолкнуться?


Alxd   (2003-01-04 12:21:00) [1]

Ошибка в описании функции в сообщении выше. Извиняюсь.
function expLangMessage(Index: integer): PChar;


Alxd   (2003-01-03 21:35:00) [2]

Спасибо. Но.
Не столько ухищрения, сколько попытка не писать дублирующий код.
Просто я хотел бы описать функции работы с файлом ini (он меня вполне устраивает) в d6.dll. В Delphi работать с ini проще.
А из vc.dll вызывать только экспортируемые функции.
Еще одно забыл добавить, обращения к локализующим функциям будут довольно частые, поэтому способ каждый раз читать из файла данные неподходит. Надо где-то разместить эти данные заранее.
Опять же решение TMemIniFile, однако при попытке сделать следующее в d6.dll:

function expLangMessage(Index: integer; var pOutput: PChar): boolean; cdecl;
begin
Result:=PChar(LangMemIni.ReadString("msMessages", IntToStr(Index), ""));
end;

после первого вызова вроде порядок, а потом ошибка работы с указателем (Invalid pointer). Короче - неопределенно все.
Может кто-то уже писал что-то подобное? Чтоб сквозная локализация была?!


Cobalt   (2003-01-02 23:42:00) [3]

К чему все эти ухищрения? Чем вам не нравится простой ini-файл? Другое дело, что надо проверять его на ошибки.
В каждой ДЛЛ-ке делаешь ф-ию "ChangeLanguage(FileName:PChar)", и в пользовательском интерфейсе вызываешь её для Дельфовой и Сишной ДЛЛ-ки. Ну и, конечно, не забывай закрывать файл после чтения :)


Наверх

Титульная страница Поиск, карта сайта Написать письмо