Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 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
1-1138970255
Ega23
2006-02-03 15:37
2006.03.05
Использование нескольких TActionList


15-1139767550
Fl@sh
2006-02-12 21:05
2006.03.05
Океан Ельзи


2-1139770997
LordOfRock
2006-02-12 22:03
2006.03.05
Вопрос по классам. Вылезает Abstract Error


3-1136739485
Rust007
2006-01-08 19:58
2006.03.05
Как задать пароль к Acess и использовать её в Delphi


15-1139527229
unknown
2006-02-10 02:20
2006.03.05
Подкинули задачку...





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский