Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 2003.01.13;
Скачать: [xml.tar.bz2];

Вниз

Как локализовать приложение?   Найти похожие ветки 

 
Alxd   (2003-01-02 22:46) [0]

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


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

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


 
Alxd   (2003-01-03 21:35) [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). Короче - неопределенно все.
Может кто-то уже писал что-то подобное? Чтоб сквозная локализация была?!


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

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



Страницы: 1 вся ветка

Форум: "Основная";
Текущий архив: 2003.01.13;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.45 MB
Время: 0.007 c
6-37258
TCrash
2002-11-14 12:10
2003.01.13
Список серверов банерных сетей


3-36961
Борис
2002-12-18 14:41
2003.01.13
Посоветуйте толковую книгу по IB


3-36917
viper
2002-12-17 09:07
2003.01.13
Как в DBGrid вывести в одном поле.....


1-37010
maxim2
2002-12-31 08:36
2003.01.13
Помогите разобраться с MSAgent


6-37251
OlegL
2002-11-14 11:15
2003.01.13
Как избежать ошибки





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский