Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2006.03.05;
Скачать: CL | DM;

Вниз

Заголовок сообщения на языке по умолчанию ОСи   Найти похожие ветки 

 
FreeAdvisor   (2006-02-01 13:17) [0]

Столкнувшись с необходимостью поддержки неск. языков в приложении, решил кнопки и заголовок сообщения выводить на языке ОС, выбранном по умолчанию.
MessageBox для этого прекрасно подходит, однако требует указания задголовка. MessageDlg этого не требует, но в его реализацию "вшиты" английские надписи.

Я вижу два решения проблемы:
 • узнать как получить стандартные строки Винды типа "Confirm", "Information", "&Retry" и т.п.
 • хранить собственные диалоговые окна в виде TForm, а на них TButton от 1 до 4 и TLabel. Строковые ресурсы в этом случае будут содержаться в файлах перевода. Частный случай метода бульдозера - крайне нежелателен :(

Прошу Вас открыть мне виды на прочие пути или дать совет в выборе одного из этих двух.

PS: развивая первый путь дошел до функции FormatMessage (возвращает расшифровку по коду, возвращенному GetLastError), перебрал значения до 3000, утомился :) и написал сюда...


 
Плохиш ©   (2006-02-01 13:48) [1]


> MessageDlg этого не требует, но в его реализацию "вшиты"
> английские надписи.

Странно, в немецкой локали выдаёт на немецком языке.


 
Игорь Шевченко ©   (2006-02-01 14:01) [2]

В сторону Intergrated Translation Environment посмотреть ?


 
GuAV ©   (2006-02-01 14:46) [3]


>  • узнать как получить стандартные строки Винды типа
> "Confirm", "Information", "&Retry" и т.п.

Можно получить из ресурсов user , однако не рекомедуется так делать.


> MessageBox для этого прекрасно подходит, однако
> требует указания задголовка.

кстати, отличия между MessageBox и MessageDlg не ограничены этим.

Самый простой и прямой путь [2].

Можно скопировать модуль consts в папку со своим проектом и поменять в этом модуле константы .

Можно вызывать CreateMessageDialog напрямую, после чего заменять подписи кнопок, находя их по имени, и отобразить этот MessageDialog так же, как это делает MessageDlg.


 
FreeAdvisor   (2006-02-02 03:59) [4]

Спасибо большое, Мастера, за ответы!

2 Плохиш

> Странно, в немецкой локали выдаёт на немецком языке.

 В MessageDlg вшит язык IDE Delphi; у меня IDE - на английском

2 Игорь Шевченко

> В сторону Intergrated Translation Environment посмотреть ?

 Подскажите, пожалуйста, где дан хороший обзор этой темы.

2 GuAV

> Можно получить из ресурсов user , однако не рекомедуется
> так делать.

 Как получить и почему не рекомендуется?

> кстати, отличия между MessageBox и MessageDlg не ограничены
> этим.

 Я это знаю - пришлось покопаться, однако, имхо, здесь это излишне.


 
GuAV ©   (2006-02-02 13:47) [5]


>  Как получить

var S: string; ID: Integer;
begin
 for ID := 800 to 810 do
 begin
   SetLength(S, 100);
   SetLength(S, LoadString(GetModuleHandle(user32),
     ID, PChar(S), Length(S) + 1));
   Memo1.Lines.Add(S);
 end;
end;


Расположение этих ресурсов не документировано. Не факт, однако что в других версиях windows они находятся там же. И не факт что в следующих версиях они вообще будут доступны.

Про ITE - не думаю что обзор нужен. Projects->Languages->Add дальше там всё понятно.

Про свой модуль consts
http://www.delphimaster.ru/articles/const_rus/index.html


 
FreeAdvisor   (2006-02-03 12:53) [6]

Спасибо всем ответившим!

Также отдельное спасибо GuAV!

Пока все ж буду делать ч/з user32 или FormatMessage, надеясь на совместимость, блюдимую :) Microsoft`ом.

Тему, я думаю, можно закрывать.



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

Текущий архив: 2006.03.05;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.04 c
3-1136930772
Святослав
2006-01-11 01:06
2006.03.05
Проблема с удалением строк в базе данных


15-1139317557
Progger
2006-02-07 16:05
2006.03.05
чем Delphi 5 хуже более поздних версий? Или лучше?


2-1140033420
49 Cent
2006-02-15 22:57
2006.03.05
Может ли Dbgrid отображать подтаблицу?


2-1140075903
kvz
2006-02-16 10:45
2006.03.05
Какой модуль надо подключить?


1-1138421486
вурдалак
2006-01-28 07:11
2006.03.05
Плавный GrayScale...