summaryrefslogtreecommitdiff
path: root/tools/langpackmgr/Unit1.pas
diff options
context:
space:
mode:
Diffstat (limited to 'tools/langpackmgr/Unit1.pas')
-rw-r--r--tools/langpackmgr/Unit1.pas513
1 files changed, 244 insertions, 269 deletions
diff --git a/tools/langpackmgr/Unit1.pas b/tools/langpackmgr/Unit1.pas
index 5267e27673..b7b249eea2 100644
--- a/tools/langpackmgr/Unit1.pas
+++ b/tools/langpackmgr/Unit1.pas
@@ -3,35 +3,28 @@ unit Unit1;
interface
uses
- Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants,
- System.Classes, Vcl.Graphics, Vcl.Controls, Vcl.Forms, Vcl.Dialogs,
- Vcl.StdCtrls, Vcl.ExtCtrls, Vcl.Grids, ShellApi;
+ Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,
+ Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.StdCtrls, Vcl.Buttons, ShellApi;
type
TForm1 = class(TForm)
+ ListBox1: TListBox;
+ Memo1: TMemo;
+ Memo2: TMemo;
Button1: TButton;
Button2: TButton;
Button3: TButton;
- Label1: TLabel;
- Label2: TLabel;
- Label3: TLabel;
- Memo1: TMemo;
- Memo2: TMemo;
- RadioGroup1: TRadioGroup;
ComboBox1: TComboBox;
- StringGrid1: TStringGrid;
-
+ procedure ListBox12Click(Sender: TObject);
procedure FormCreate(Sender: TObject);
- procedure Click(Sender: TObject);
- procedure Button1Click(Sender: TObject);
+ procedure ListBox1Click(Sender: TObject);
+ procedure langlist;
+ procedure fileslist;
+ procedure stringview;
+ procedure savestring;
procedure Button2Click(Sender: TObject);
procedure Button3Click(Sender: TObject);
- procedure viewline;
- procedure RadioGroup1Click(Sender: TObject);
- procedure ComboBox1Change(Sender: TObject);
- procedure Draw(Sender: TObject; ACol, ARow: Integer; Rect: TRect;
- State: TGridDrawState);
-
+ procedure Button1Click(Sender: TObject);
private
{ Private declarations }
@@ -41,76 +34,48 @@ type
var
Form1: TForm1;
- openfile:textfile;
- lang,stmp: string;
- str: array [0..40,0..6000] of string;
- ffile:array [0..6000] of string;
- core: array [0..30] of string;
- l:array [0..6000] of integer;
- ns:array [0..6000] of boolean;
- ii,i,n:integer;
-
-
+ locale:string;
+ z,j,i,qq,l:integer;
+ sr:tsearchrec;
+ res:integer;
+ s:array[0..1,1..6000] of string;
+ u:array[1..6000] of integer;
+ first:string;
+ filename:string;
implementation
{$R *.dfm}
-procedure TForm1.FormCreate(Sender: TObject);
-var
- SR:TSearchRec;
- Res:Integer;
+procedure TForm1.Button1Click(Sender: TObject);
begin
- combobox1.Items.Clear;
- combobox1.Items.Add('=CORE=');
- Res:=FindFirst(ExtractFilePath(Application.ExeName)
- +'\english\plugins\*.txt', faAnyFile, SR);
- while Res = 0 do
- begin
- Form1.comboBox1.Items.Add('p|'+copy(extractfilename(SR.Name),
- 1,length(extractfilename(SR.Name))-4));
- Res:=FindNext(SR);
- end;
- FindClose(SR);
-
- Res:=FindFirst(ExtractFilePath(Application.ExeName)
- +'\english\weather\*.txt', faAnyFile, SR);
- while Res = 0 do
- begin
- Form1.comboBox1.Items.Add('w|'+copy(extractfilename(SR.Name),
- 1,length(extractfilename(SR.Name))-4));
- Res:=FindNext(SR);
- end;
- FindClose(SR);
- end;
-
-
+memo2.lines:=memo1.lines;
+end;
procedure TForm1.Button2Click(Sender: TObject);
-
var str:string; i:integer;
begin
str:='http://translate.google.com/?hl=&ie=yhgg#auto/';
- if form1.Caption='belarusian' then str:=str+'be/';
- if form1.Caption='bulgarian' then str:=str+'bg/';
- if form1.Caption='chinese' then str:=str+'zh-CN/';
- if form1.Caption='czech' then str:=str+'cs/';
- if form1.Caption='duth' then str:=str+'da/';
- if form1.Caption='estonian' then str:=str+'et/';
- if form1.Caption='french' then str:=str+'fr/';
- if form1.Caption='german' then str:=str+'de/';
- if form1.Caption='herbrew' then str:=str+'iw/';
- if form1.Caption='hungarian' then str:=str+'hu/';
- if form1.Caption='italian' then str:=str+'it/';
- if form1.Caption='japanese' then str:=str+'ja/';
- if form1.Caption='korean' then str:=str+'ko/';
- if form1.Caption='norwegian' then str:=str+'no/';
- if form1.Caption='polish' then str:=str+'pl/';
- if form1.Caption='portuguese_br' then str:=str+'pt/';
- if form1.Caption='russian' then str:=str+'ru/';
- if form1.Caption='slovak' then str:=str+'sk/';
- if form1.Caption='spanish' then str:=str+'es/';
- if form1.Caption='turkish' then str:=str+'tr/';
- if form1.Caption='ukrainian' then str:=str+'uk/';
+ if locale='belarusian' then str:=str+'be/';
+ if locale='bulgarian' then str:=str+'bg/';
+ if locale='chinese' then str:=str+'zh-CN/';
+ if locale='czech' then str:=str+'cs/';
+ if locale='duth' then str:=str+'da/';
+ if locale='estonian' then str:=str+'et/';
+ if locale='french' then str:=str+'fr/';
+ if locale='german' then str:=str+'de/';
+ if locale='herbrew' then str:=str+'iw/';
+ if locale='hungarian' then str:=str+'hu/';
+ if locale='italian' then str:=str+'it/';
+ if locale='japanese' then str:=str+'ja/';
+ if locale='korean' then str:=str+'ko/';
+ if locale='norwegian' then str:=str+'no/';
+ if locale='polish' then str:=str+'pl/';
+ if locale='portuguese_br' then str:=str+'pt/';
+ if locale='russian' then str:=str+'ru/';
+ if locale='slovak' then str:=str+'sk/';
+ if locale='spanish' then str:=str+'es/';
+ if locale='turkish' then str:=str+'tr/';
+ if locale='ukrainian' then str:=str+'uk/';
for i:=0 to memo1.Lines.Count-1 do
begin
str:=str+memo1.Lines[i];
@@ -121,61 +86,87 @@ var str:string; i:integer;
end;
procedure TForm1.Button3Click(Sender: TObject);
- var fi:integer;
-begin
+var sList:TStringList;
+ begin
+ savestring;
+ sList:=TstringList.Create;
+ sList.add(first);
+ for i := 1 to j do
+ begin
+ if copy(s[0,i],1,1)=';' then
+ sList.add(s[0,i]);
+ if s[1,i]<>'' then
+ begin
+ sList.add(s[0,i]);
+ sList.add(s[1,i]);
+ end;
+ end;
+ sList.SavetoFile(extractfilePath(application.exename)
+ +'/'+locale+'/'+filename+'.txt',TEncoding.UTF8);
+ sList.free;
+end;
- rewrite(openfile);
- writeln(openfile, str[0,0]);
- for fi:=1 to n do
+procedure tform1.fileslist;
+begin
+ ListBox1.Items.Add('=CORE=');
+ Res:=FindFirst(ExtractFilePath(Application.ExeName)
+ +'\english\plugins\*.txt', faAnyFile, SR);
+ while Res = 0 do
+ begin
+ listBox1.Items.Add('plugins\'+copy(extractfilename(SR.Name),1,
+ length(extractfilename(SR.Name))-4));
+ Res:=FindNext(SR);
+ end;
+ FindClose(SR);
+ Res:=FindFirst(ExtractFilePath(Application.ExeName)
+ +'\english\weather\*.txt', faAnyFile, SR);
+ while Res = 0 do
begin
- if copy(str[0,fi],1,1)=';' then
- writeln(openfile, str[0,fi]);
- if (copy(str[0,fi],1,1)='[') and (str[1,fi]<>'') then
- begin
- writeln(openfile, str[0,fi]);
- writeln(openfile, str[1,fi]);
- end;
+ listBox1.Items.Add('weather\'+copy(extractfilename(SR.Name),1,
+ length(extractfilename(SR.Name))-4));
+ Res:=FindNext(SR);
end;
- CloseFile(openfile);
+ FindClose(SR);
end;
-procedure TForm1.Button1Click(Sender: TObject);
-begin
- memo2.Lines:=memo1.Lines;
-end;
+procedure tform1.langlist;
+ begin
+ res:=findfirst(extractfilePath(application.exename)+'*',faanyfile,SR);
+ while Res = 0 do
+ begin
+ if ((SR.attr and fadirectory)=fadirectory)
+ and ((SR.name='.')or(SR.name='..')) then
+ begin res:=findnext(SR); continue; end;
+ if ((SR.attr and fadirectory)=fadirectory)
+ and (fileexists(extractfilepath(application.exename)+
+ '/'+SR.name+'/=HEAD=.txt')) and (sr.name<>'english') then
+ ListBox1.Items.Add(SR.name);
+ Res:=FindNext(SR);
+ end;
+ FindClose(SR);
+ end;
-procedure TForm1.Click(Sender: TObject);
-var sa:integer; da:string;
+procedure tform1.savestring;
+var sa:integer;
begin
- da:=str[1,l[ii]];
- str[1,l[ii]]:='';
+ s[1,u[l]]:='';
for sa:=0 to memo2.Lines.Count-1 do
-begin
- str[1,l[ii]]:=str[1,l[ii]]+memo2.Lines[sa];
- if sa<>memo2.Lines.Count-1 then str[1,l[ii]]:=str[1,l[ii]]+'\n';
-end;
- if str[1,l[ii]]<>da then ns[ii]:=true;
-memo1.Lines.clear;
-memo2.Lines.clear;
-viewline;
-ii:=stringgrid1.Row;
-stringgrid1.rowcount:=stringgrid1.rowcount+1;
-stringgrid1.rowcount:=stringgrid1.rowcount-1;
+ begin
+ s[1,u[l]]:=s[1,u[l]]+memo2.Lines[sa];
+ if sa<>memo2.Lines.Count-1 then s[1,u[l]]:=s[1,u[l]]+'\n';
+ end;
end;
-procedure tform1.viewline;
-var im,m:integer;
-untranslate,changes: integer;
+procedure tform1.stringview;
+var
+im,m:integer;
sse:string;
-begin
- m:=1;
- if RadioGroup1.itemindex=0
- then
- sse:=copy(str[0,l[stringgrid1.row]],2, length(str[0,l[stringgrid1.row]])-2)
- else
- sse:=str[2,l[stringgrid1.row]];
- for im := 1 to length(sse)-1 do
+ begin
+ sse:=copy(s[0,u[listbox1.itemindex]],2,
+ length(s[0,u[listbox1.itemindex]])-2);
+ m:=1;
+ for im := 1 to length(sse)-1 do
begin
if copy(sse,im,2)='\n' then
begin
@@ -183,172 +174,156 @@ begin
m:=im+2;
end;
end;
+ memo2.Lines.Clear;
+ l:=listbox1.itemindex;
if m=1 then memo1.Lines.Add(sse)
else memo1.Lines.Add(copy(sse,m,length(sse)-m+2));
- if str[1,l[stringgrid1.row]]<>'' then
+ if s[1,u[listbox1.itemindex]]<>'' then
begin
m:=1;
- for im := 1 to length(str[1,l[stringgrid1.row]])-1 do
+ for im := 1 to length(s[1,u[listbox1.itemindex]])-1 do
begin
- if copy(str[1,l[stringgrid1.row]],im,2)='\n' then
+ if copy(s[1,u[listbox1.itemindex]],im,2)='\n' then
begin
- memo2.Lines.Add(copy(str[1,l[stringgrid1.row]],m,im-m));
+ memo2.Lines.Add(copy(s[1,u[listbox1.itemindex]],m,im-m));
m:=im+2;
end;
end;
- if m=1 then memo2.Lines.Add(str[1,l[stringgrid1.row]])
- else memo2.Lines.Add(copy(str[1,l[stringgrid1.row]],m,
- length(str[1,l[stringgrid1.row]])-m+2));
+ if m=1 then memo2.Lines.Add(s[1,u[listbox1.itemindex]])
+ else memo2.Lines.Add(copy(s[1,u[listbox1.itemindex]],m,
+ length(s[1,u[listbox1.itemindex]])-m+2));
end;
+ end;
- changes:=0;
- for im:= 0 to stringgrid1.rowcount-1 do
- if ns[im]=true then changes:=changes+1;
- label2.Caption:='Changes:'+inttostr(changes);
- untranslate:=0;
- for im:= 0 to stringgrid1.rowcount-1 do
- if str[1,l[im]]='' then untranslate:=untranslate+1;
- label3.Caption:='Untranslate:'+inttostr(untranslate);
-
-end;
-
-
-procedure TForm1.ComboBox1Change(Sender: TObject);
+procedure TForm1.FormCreate(Sender: TObject);
+ begin
+ langlist;
+ qq:=0;
+ end;
-begin
- for i := 0 to 6000 do
- begin
- for n:=0 to 40 do str[n,i]:='';
- l[i]:=0;
- ns[i]:=false;
- memo1.Lines.Clear;
- memo2.Lines.Clear;
- end;
- if ComboBox1.Text='=CORE=' then
- assignfile(openfile,ExtractFilePath(Application.ExeName)+
- '\english\=CORE=.txt',CP_UTF8);
- if copy(ComboBox1.Text,1,2)='w|' then
- assignfile(openfile,ExtractFilePath(Application.ExeName)+
- '\english\weather\'+copy(ComboBox1.Text,3,length(ComboBox1.Text)-2)+'.txt',CP_UTF8);
- if copy(ComboBox1.Text,1,2)='p|' then
- assignfile(openfile,ExtractFilePath(Application.ExeName)+
- '\english\plugins\'+copy(ComboBox1.Text,3,length(ComboBox1.Text)-2)+'.txt',CP_UTF8);
- reset(openfile);
- readln(openfile,stmp);
- str[0,0]:=stmp;
- stringgrid1.Rowcount:=0;
- n:=0;
-while not eof(openfile) do
-begin
- n:=n+1;
- readln(openfile,stmp);
- str[0,n]:=stmp;
- if copy(stmp,1,1)='[' then
+procedure TForm1.ListBox1Click(Sender: TObject);
begin
- l[stringgrid1.Rowcount-1]:=n;
- stringgrid1.Cells[0,stringgrid1.Rowcount-1]:=stmp;
- stringgrid1.Rowcount:=stringgrid1.Rowcount+1;
+ if qq=0 then
+ begin
+ if listbox1.itemindex<>-1 then
+ begin
+ memo1.Lines.Clear;
+ memo1.Lines.LoadFromFile(extractfilePath(application.exename)
+ +'/'+listbox1.items[listbox1.itemindex]+'/=HEAD=.txt');
+ end;
+ end;
+ if (qq=2) and (listbox1.itemindex>0)then
+ begin
+ savestring;
+ {}
+ memo1.Lines.clear;
+ memo2.Lines.clear;
+ stringview;
+ end;
end;
-end;
-//////////////////////////////////////////////////////////
-if RadioGroup1.Items.Count=2 then
-begin
- if ComboBox1.Text='=CORE=' then
- assignfile(openfile,ExtractFilePath(Application.ExeName)+
- '\'+RadioGroup1.Items[1]+'\=CORE=.txt',CP_UTF8);
- if copy(ComboBox1.Text,1,2)='w|' then
- assignfile(openfile,ExtractFilePath(Application.ExeName)+'\'
- +RadioGroup1.Items[1]+
- '\weather\'+copy(ComboBox1.Text,3,length(ComboBox1.Text)-2)+'.txt',CP_UTF8);
- if copy(ComboBox1.Text,1,2)='p|' then
- assignfile(openfile,ExtractFilePath(Application.ExeName)+'\'
- +RadioGroup1.Items[1]+
- '\plugins\'+copy(ComboBox1.Text,3,length(ComboBox1.Text)-2)+'.txt',CP_UTF8);
- reset(openfile);
- readln(openfile);
- n:=0;
- while not eof(openfile) do
+procedure TForm1.ListBox12Click(Sender: TObject);
+var llist:TStringList;
+f:textfile;
begin
- readln(openfile,ffile[n]);
- n:=n+1;
-end;
-for i := 0 to stringgrid1.Rowcount do
-for ii := 0 to n-1 do
-if ffile[ii]=stringgrid1.cells[0,i] then
-str[2,l[i]]:=ffile[ii+1];
-end;
-///////////////////////////////////////
-//////////////////////////////////////////////////////////
- if ComboBox1.Text='=CORE=' then
- assignfile(openfile,ExtractFilePath(Application.ExeName)+
- '\'+form1.Caption+'\=CORE=.txt',CP_UTF8);
- if copy(ComboBox1.Text,1,2)='w|' then
- assignfile(openfile,ExtractFilePath(Application.ExeName)+'\'+form1.Caption+
- '\weather\'+copy(ComboBox1.Text,3,length(ComboBox1.Text)-2)+'.txt',CP_UTF8);
- if copy(ComboBox1.Text,1,2)='p|' then
- assignfile(openfile,ExtractFilePath(Application.ExeName)+'\'+form1.Caption+
- '\plugins\'+copy(ComboBox1.Text,3,length(ComboBox1.Text)-2)+'.txt',CP_UTF8);
- reset(openfile);
- readln(openfile);
- n:=0;
- while not eof(openfile) do
-begin
- readln(openfile,ffile[n]);
- n:=n+1;
-end;
-for i := 0 to stringgrid1.Rowcount do
-for ii := 0 to n-1 do
-if ffile[ii]=stringgrid1.cells[0,i] then
-str[1,l[i]]:=ffile[ii+1];
-////////////////////////////////////////////////////////////////
-
+case qq of
+
+ 0:begin
+ ListBox1.height:=300;
+ Combobox1.Visible:=true;
+ Memo1.Lines.Clear;
+ Memo1.Height:=150;
+ Memo2.Visible:=true;
+ Button1.Visible:=true;
+ Button2.Visible:=true;
+ Button3.Visible:=true;
+ locale:=listbox1.items[listbox1.itemindex];
+ listbox1.items.clear;
+ form1.Caption:='Miranda NG Langpack Manager: '+locale;
+ listbox1.items.add('..');
+ fileslist;
+ qq:=1;
+ end;
-stringgrid1.Rowcount:=stringgrid1.Rowcount-1;
-label1.Caption:='Strings:'+inttostr(stringgrid1.Rowcount);
+ 1:begin
+ if listbox1.items[listbox1.itemindex]='..' then
+ begin
+ ListBox1.height:=343;
+ Combobox1.Visible:=false;
+ ListBox1.Items.clear;
+ Memo1.Lines.Clear;
+ Memo1.Height:=343;
+ Memo2.Visible:=false;
+ Button1.Visible:=false;
+ Button2.Visible:=false;
+ Button3.Visible:=false;
+ langlist;
+ listbox1.itemindex:=0;
+ form1.Caption:='Miranda NG Langpack Manager';
+ qq:=0;
+ end
+ else
+ begin
+ for i := 1 to 6000 do
+ begin s[0,i]:='';s[1,i]:='';end;
+ j:=0;
+ lList:=TstringList.Create;
+ lList.LoadFromFile(extractfilePath(application.exename)+'/english/'
+ +listbox1.items[listbox1.itemindex]+'.txt',TEncoding.UTF8);
+ first:=lList[0];
+ for i := 1 to lList.Count-1 do
+ begin
+ j:=j+1;
+ s[0,j]:=lList[i];
+ end;
+ //
+ if not FileExists(extractfilePath(application.exename)
+ +'/'+locale+'/'+listbox1.items[listbox1.itemindex]+'.txt')
+ then
+ begin
+ assignfile(f,extractfilePath(application.exename)
+ +'/'+locale+'/'+listbox1.items[listbox1.itemindex]+'.txt');
+ rewrite(f);
+ closefile(f);
+ end;
+//
+ lList.LoadFromFile(extractfilePath(application.exename)+'/'+locale+'/'
+ +listbox1.items[listbox1.itemindex]+'.txt',TEncoding.UTF8);
+ for z:= 1 to j do
+ for i := 1 to lList.count-2 do
+ if (copy(s[0,z],1,1)='[')and(s[0,z]=lList[i]) then
+ s[1,z]:=lList[i+1];
+ lList.free;
+ form1.Caption:='Miranda NG Langpack Manager - '
+ +locale+':'+listbox1.items[listbox1.itemindex];
+ filename:=listbox1.items[listbox1.itemindex];
+ listbox1.items.Clear;
+ listbox1.items.add('..');
+ z:=0;
+ for i := 1 to j do
+ if (copy(s[0,i],1,1)='[')and(s[1,i]='') then
+ begin
+ z:=z+1;
+ u[z]:=i;
+ listbox1.items.add(copy(s[0,i],2,length(s[0,i])-2));
+ end;
-ii:=0;
-viewline;
-end;
+ qq:=2;
+ end;
+ end;
-procedure TForm1.Draw(Sender: TObject; ACol, ARow: Integer; Rect: TRect;
- State: TGridDrawState);
-Var
- StringGrid: TStringGrid;
- Can: TCanvas;
-begin
- StringGrid := Sender as TStringGrid;
- Can := StringGrid.Canvas; Can.Font := StringGrid.Font;
- if (ARow >= StringGrid.FixedRows) and (ACol >= StringGrid.FixedCols)
- then Can.Brush.Color := StringGrid.Color
- else Can.Brush.Color := StringGrid.FixedColor;
- if str[1,l[ARow]]='' then Can.Brush.Color:=clRed;
- if ns[arow]=true then Can.Brush.Color:=clGreen;
- Can.FillRect(Rect);
- Can.TextOut(Rect.Left+2,Rect.Top+2, StringGrid.Cells[ACol, ARow]);
+ 2:begin
+ if listbox1.items[listbox1.itemindex]='..' then
+ begin
+ listbox1.Items.Clear;
+ listbox1.Items.Add('..');
+ fileslist;
+ memo1.Lines.Clear;
+ memo2.Lines.Clear;
+ form1.Caption:='Miranda NG Langpack Manager - '+locale;
+ qq:=1;
+ end;
+ end;
end;
-
-procedure TForm1.RadioGroup1Click(Sender: TObject);
-var m,im:integer;
-sse:string;
-begin
-memo1.Lines.Clear;
- m:=1;
- if RadioGroup1.itemindex=0
- then
- sse:=copy(str[0,l[stringgrid1.row]],2, length(str[0,l[stringgrid1.row]])-2)
- else
- sse:=str[2,l[stringgrid1.row]];
- for im := 1 to length(sse)-1 do
- begin
- if copy(sse,im,2)='\n' then
- begin
- memo1.Lines.Add(copy(sse,m,im-m));
- m:=im+2;
- end;
- end;
- if m=1 then memo1.Lines.Add(sse)
- else memo1.Lines.Add(copy(sse,m,length(sse)-m+2));
end;
-
end.