Главная страница
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.034 c
6-1132775136
Николай2005
2005-11-23 22:45
2006.03.05
формирование POST запроса в TIdHTTP


1-1138611367
WondeRu
2006-01-30 11:56
2006.03.05
Многопоточность и Property Page - не дружат?


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


1-1138799572
MegaVolt
2006-02-01 16:12
2006.03.05
Подскажите библиотечку для работы с регулярными выражениями.


2-1140078083
Creative
2006-02-16 11:21
2006.03.05
проблема с уничтожением поля объекта