Spolszczenie komunikatów i tytułów podstawowych przycisków

0

Witam,

próbowałem spolszczyć komunikaty i podtawowe przyciski, YES/NO/CANCEL

w tym celu dokonałem edycji pliku Consts.pas, niestety w kompilowanych programach w zapytaniach przyciski mrYes itp dalej mam po ang.

Co mogłem zrobić źle?

0

consts.pas jest kompilowane do consts.dcu, tylko pytanie w ktorym momencie?
moze zmieniles w pas a dcu wciaz jest "po staremu"...?
Pytanie tez czy na pewno to siedzi w const? bo np teksty przyciskow komunikatow siedza w dialogs, przynajmniej na d7.

1

Do pytającego. Teksty podstawowych komunikatów oraz etykiety przycisków jak i tytuły okienka dla
MessageDlg faktycznie siedzą w consts.dcu i można kiedyś było pobrać ten plik po polsku, o ile mnie
pamięć nie myli z polskiej strony borlanda. Jednak jeżeli zależy Tobie tylko na spolszczeniu tego, co
znajduje się na MessageDlg to skorzystaj z funkcji CreateMessageDialog, poniżej przykładowy kod.

EDIT: teraz doczytałem że chodzi o Delphi 2010, bo w Delphi 7 nie bylo problemo z tym, jednak co
do spolszczenia nazw przycisku czy tytułu komunikatu to polecam zastosować opisaną tutaj metodę.

//...
procedure TMainForm.FormCreate(Sender: TObject);
begin
  Application.Title := MainForm.Caption;
  MainForm.Position := poScreenCenter;
  MainForm.ActiveControl := ShowMsgDlgButton;
end;

procedure TMainForm.FormActivate(Sender: TObject);
begin
  ShowWindow(Application.Handle, SW_HIDE);
end;

procedure TMainForm.CBXOnClick(Sender : TObject);
begin
  with Sender as TCheckBox do
  begin
    if Checked then
    begin
      ShowMessage('Zaznaczyłeś');
    end
    else
    begin
      ShowMessage('Odznaczyłeś');
    end;
  end;
end;

procedure TMainForm.ShowMsgDlgButtonClick(Sender: TObject);
var
  Dlg : TForm;
  CBX : TCheckBox;
begin
  Dlg := CreateMessageDialog('Czy na pewno chcesz zamknąć program?',
  mtConfirmation, [mbYes, mbNo]);
  Dlg.Caption := Application.Title;
  Dlg.BorderIcons := [];
  Dlg.Height := 130;
  Dlg.ActiveControl := TButton(Dlg.FindComponent('Yes'));
  TImage(Dlg.FindComponent('Image')).Picture.Assign(Application.Icon);
  TButton(Dlg.FindComponent('Yes')).Caption := 'Tak';
  TButton(Dlg.FindComponent('No')).Caption := 'Nie';
  TButton(Dlg.FindComponent('Yes')).Top := 70;
  TButton(Dlg.FindComponent('No')).Top := 70;
  CBX := TCheckBox.Create(Dlg);
  CBX.Parent := Dlg;
  CBX.Caption := 'Zawsze pytaj';
  CBX.Left := (Dlg.Width - CBX.Width) div 2;
  CBX.Top := 40;
  CBX.Checked := False;
  CBX.OnClick := CBXOnClick;
  Dlg.ShowModal;

  case Dlg.ModalResult of
    mrYes : begin
      Caption := 'Tak';
    end;
    mrNo : begin
      Caption := 'NIE';
    end;
  end;

  if CBX.Checked then
  begin
    Caption := Caption + #32 + '- Zaznaczony';
  end
  else
  begin
    Caption := Caption + #32 + '- Odznaczony';
  end;
end;
0

Odświeżam watek:

Jak zabrać się za spolszczenie komunikatów/klawiszy w najnowszej wersji Delphi: Tokyo?
Tam juz nie ma nawet pliku consts.pas ...

0
olesio napisał(a):

EDIT: teraz doczytałem że chodzi o Delphi 2010, bo w Delphi 7 nie bylo problemo z tym, jednak co
do spolszczenia nazw przycisku czy tytułu komunikatu to polecam zastosować opisaną tutaj metodę.

O masakra... ładny WTF ten kod.
Jak tak ma wyglądać odpalenie prostego dialogu to ja przepraszam.

A wystarczy użyć zamiast MessageDlg funkcji Application.MessageBox.
Albo funkcje MessageBox* z modułu Windows i ma się wszystkie dialogi w aplikacji w języku pod jakim pracuje Windows.
Czyli jeszcze lepiej, imo...

1
coder-bis napisał(a):

Odświeżam watek:

Jak zabrać się za spolszczenie komunikatów/klawiszy w najnowszej wersji Delphi: Tokyo?
Tam juz nie ma nawet pliku consts.pas ...

OK, doszedłem jak to zrobić, i zostawiam dla potomności:

  • odnaleźć plik vcl.consts.pas i przetłumaczyć komunikaty na polski
  • skompilować plik do dcu używając DCC32.exe
  • podmienić vcl.consts.dcu w plikach delphi
0
coder-bis napisał(a):

Odświeżam watek:

Jak zabrać się za spolszczenie komunikatów/klawiszy w najnowszej wersji Delphi: Tokyo?

To jeszcze tego nie ogarnęli?

0
coder-bis napisał(a):

OK, doszedłem jak to zrobić, i zostawiam dla potomności:

A zadziała to przy kompilacji z BPLami?

0
Azarien napisał(a):
coder-bis napisał(a):

Odświeżam watek:

Jak zabrać się za spolszczenie komunikatów/klawiszy w najnowszej wersji Delphi: Tokyo?

To jeszcze tego nie ogarnęli?

Przecież to Delphi. A ja spytam, co gdy będzie trzeba wiele wersji językowych aplikacji? Powinno to siedzieć w zasobach, a nie hardkorowany string. A zasoby dla różnych języków, tak to przecież działa w całym systemie Windows

2

@kulson Zasoby przed utworzeniem pliku wykonywalnego są tak samo kompilowane RC do RES więc można porównać kompilację PAS do DCU wiec po prostu weź nie pier*. Poza tym tu chodzi o standardowe komunikaty błędów itp w praktyce nic co rzeczywiście komuś potrzebne po polsku ale po hejtować zawsze można.
Co do wielu wersji językowych Delphi od nie pamiętam kiedy ma do tego narzędzie choć go nie lubię.

2
kulson napisał(a):
Azarien napisał(a):
coder-bis napisał(a):

Odświeżam watek:

Jak zabrać się za spolszczenie komunikatów/klawiszy w najnowszej wersji Delphi: Tokyo?

To jeszcze tego nie ogarnęli?

Przecież to Delphi.

No i?

A ja spytam, co gdy będzie trzeba wiele wersji językowych aplikacji?

Co ma być?
Języki można przełączyć dynamicznie, a rozwiązań do tego jest od metra.
Od wbudowanego i opartego na resourcestring po wiele customowych.

Powinno to siedzieć w zasobach, a nie hardkorowany string. A zasoby dla różnych języków, tak to przecież działa w całym systemie Windows

I tak można to zrobić.
A to, że ktoś nie wie jak, to nie wina Delphi.
Prawda hate-boy?

1 użytkowników online, w tym zalogowanych: 0, gości: 1