![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Заголовок сообщения на языке по умолчанию ОСи [D7, WinXP]
FreeAdvisor © (2006-02-01 13:17:00)Столкнувшись с необходимостью поддержки неск. языков в приложении, решил кнопки и заголовок сообщения выводить на языке ОС, выбранном по умолчанию.
MessageBox для этого прекрасно подходит, однако требует указания задголовка. MessageDlg этого не требует, но в его реализацию "вшиты" английские надписи.
Я вижу два решения проблемы:
• узнать как получить стандартные строки Винды типа 'Confirm', 'Information', '&Retry' и т.п.
• хранить собственные диалоговые окна в виде TForm, а на них TButton от 1 до 4 и TLabel. Строковые ресурсы в этом случае будут содержаться в файлах перевода. Частный случай метода бульдозера - крайне нежелателен :(
Прошу Вас открыть мне виды на прочие пути или дать совет в выборе одного из этих двух.
PS: развивая первый путь дошел до функции FormatMessage (возвращает расшифровку по коду, возвращенному GetLastError), перебрал значения до 3000, утомился :) и написал сюда...
FreeAdvisor (2006-02-03 12:53:00) [1]Спасибо всем ответившим!
Также отдельное спасибо GuAV!
Пока все ж буду делать ч/з user32 или FormatMessage, надеясь на совместимость, блюдимую :) Microsoft`ом.
Тему, я думаю, можно закрывать.
GuAV (2006-02-02 13:47:00) [2]
> Как получить
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-02 03:59:00) [3]Спасибо большое, Мастера, за ответы!
2 Плохиш
> Странно, в немецкой локали выдаёт на немецком языке.
В MessageDlg вшит язык IDE Delphi; у меня IDE - на английском
2 Игорь Шевченко
> В сторону Intergrated Translation Environment посмотреть ?
Подскажите, пожалуйста, где дан хороший обзор этой темы.
2 GuAV
> Можно получить из ресурсов user , однако не рекомедуется
> так делать.
Как получить и почему не рекомендуется?
> кстати, отличия между MessageBox и MessageDlg не ограничены
> этим.
Я это знаю - пришлось покопаться, однако, имхо, здесь это излишне.
GuAV (2006-02-01 14:46:00) [4]
> • узнать как получить стандартные строки Винды типа
> 'Confirm', 'Information', '&Retry' и т.п.
Можно получить из ресурсов user , однако не рекомедуется так делать.
> MessageBox для этого прекрасно подходит, однако
> требует указания задголовка.
кстати, отличия между MessageBox и MessageDlg не ограничены этим.
Самый простой и прямой путь [2].
Можно скопировать модуль consts в папку со своим проектом и поменять в этом модуле константы .
Можно вызывать CreateMessageDialog напрямую, после чего заменять подписи кнопок, находя их по имени, и отобразить этот MessageDialog так же, как это делает MessageDlg.
Игорь Шевченко (2006-02-01 14:01:00) [5]В сторону Intergrated Translation Environment посмотреть ?
Плохиш (2006-02-01 13:48:00) [6]
> MessageDlg этого не требует, но в его реализацию "вшиты"
> английские надписи.
Странно, в немецкой локали выдаёт на немецком языке.