Форум: "Основная";
Текущий архив: 2006.03.05;
Скачать: [xml.tar.bz2];
ВнизЗаголовок сообщения на языке по умолчанию ОСи Найти похожие ветки
← →
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;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.012 c