mirror of
https://gitlab.com/freepascal.org/lazarus/lazarus.git
synced 2025-08-19 16:40:54 +02:00
Components, PoChecker:
a) made it localizable; b) slightly improved dialogs; c) added Russian translation. git-svn-id: trunk@36198 -
This commit is contained in:
parent
fb29f7bfd4
commit
b6b63e0fd4
3
.gitattributes
vendored
3
.gitattributes
vendored
@ -2017,8 +2017,11 @@ components/pochecker/Proj/pochecker.lpr svneol=native#text/plain
|
|||||||
components/pochecker/Proj/pocheckermain.lfm svneol=native#text/plain
|
components/pochecker/Proj/pocheckermain.lfm svneol=native#text/plain
|
||||||
components/pochecker/Proj/pocheckermain.pp svneol=native#text/plain
|
components/pochecker/Proj/pocheckermain.pp svneol=native#text/plain
|
||||||
components/pochecker/README.txt svneol=native#text/plain
|
components/pochecker/README.txt svneol=native#text/plain
|
||||||
|
components/pochecker/languages/pocheckerconsts.po svneol=native#text/plain
|
||||||
|
components/pochecker/languages/pocheckerconsts.ru.po svneol=native#text/plain
|
||||||
components/pochecker/pochecker.lpk svneol=native#text/plain
|
components/pochecker/pochecker.lpk svneol=native#text/plain
|
||||||
components/pochecker/pochecker.pas svneol=native#text/plain
|
components/pochecker/pochecker.pas svneol=native#text/plain
|
||||||
|
components/pochecker/pocheckerconsts.pas svneol=native#text/pascal
|
||||||
components/pochecker/pocheckermain.lfm svneol=native#text/plain
|
components/pochecker/pocheckermain.lfm svneol=native#text/plain
|
||||||
components/pochecker/pocheckermain.pp svneol=native#text/plain
|
components/pochecker/pocheckermain.pp svneol=native#text/plain
|
||||||
components/pochecker/pofamilies.pp svneol=native#text/plain
|
components/pochecker/pofamilies.pp svneol=native#text/plain
|
||||||
|
@ -4,11 +4,13 @@
|
|||||||
<Version Value="9"/>
|
<Version Value="9"/>
|
||||||
<PathDelim Value="\"/>
|
<PathDelim Value="\"/>
|
||||||
<General>
|
<General>
|
||||||
|
<Flags>
|
||||||
|
<SaveOnlyProjectUnits Value="True"/>
|
||||||
|
</Flags>
|
||||||
<SessionStorage Value="InProjectDir"/>
|
<SessionStorage Value="InProjectDir"/>
|
||||||
<MainUnit Value="0"/>
|
<MainUnit Value="0"/>
|
||||||
<ResourceType Value="res"/>
|
<ResourceType Value="res"/>
|
||||||
<UseXPManifest Value="True"/>
|
<UseXPManifest Value="True"/>
|
||||||
<Icon Value="0"/>
|
|
||||||
</General>
|
</General>
|
||||||
<i18n>
|
<i18n>
|
||||||
<EnableI18N LFM="False"/>
|
<EnableI18N LFM="False"/>
|
||||||
@ -37,7 +39,7 @@
|
|||||||
<PackageName Value="LCL"/>
|
<PackageName Value="LCL"/>
|
||||||
</Item2>
|
</Item2>
|
||||||
</RequiredPackages>
|
</RequiredPackages>
|
||||||
<Units Count="5">
|
<Units Count="6">
|
||||||
<Unit0>
|
<Unit0>
|
||||||
<Filename Value="pochecker.lpr"/>
|
<Filename Value="pochecker.lpr"/>
|
||||||
<IsPartOfProject Value="True"/>
|
<IsPartOfProject Value="True"/>
|
||||||
@ -46,25 +48,34 @@
|
|||||||
<Unit1>
|
<Unit1>
|
||||||
<Filename Value="pocheckermain.pp"/>
|
<Filename Value="pocheckermain.pp"/>
|
||||||
<IsPartOfProject Value="True"/>
|
<IsPartOfProject Value="True"/>
|
||||||
|
<ComponentName Value="PoCheckerForm"/>
|
||||||
<HasResources Value="True"/>
|
<HasResources Value="True"/>
|
||||||
|
<ResourceBaseClass Value="Form"/>
|
||||||
<UnitName Value="pocheckermain"/>
|
<UnitName Value="pocheckermain"/>
|
||||||
</Unit1>
|
</Unit1>
|
||||||
<Unit2>
|
<Unit2>
|
||||||
<Filename Value="..\pofamilies.pp"/>
|
<Filename Value="..\pofamilies.pp"/>
|
||||||
<IsPartOfProject Value="True"/>
|
<IsPartOfProject Value="True"/>
|
||||||
<UnitName Value="pofamilies"/>
|
<UnitName Value="PoFamilies"/>
|
||||||
</Unit2>
|
</Unit2>
|
||||||
<Unit3>
|
<Unit3>
|
||||||
<Filename Value="..\resultdlg.pp"/>
|
<Filename Value="..\resultdlg.pp"/>
|
||||||
<IsPartOfProject Value="True"/>
|
<IsPartOfProject Value="True"/>
|
||||||
|
<ComponentName Value="ResultDlgForm"/>
|
||||||
<HasResources Value="True"/>
|
<HasResources Value="True"/>
|
||||||
<UnitName Value="resultdlg"/>
|
<ResourceBaseClass Value="Form"/>
|
||||||
|
<UnitName Value="ResultDlg"/>
|
||||||
</Unit3>
|
</Unit3>
|
||||||
<Unit4>
|
<Unit4>
|
||||||
<Filename Value="..\simplepofiles.pp"/>
|
<Filename Value="..\simplepofiles.pp"/>
|
||||||
<IsPartOfProject Value="True"/>
|
<IsPartOfProject Value="True"/>
|
||||||
<UnitName Value="simplepofiles"/>
|
<UnitName Value="simplepofiles"/>
|
||||||
</Unit4>
|
</Unit4>
|
||||||
|
<Unit5>
|
||||||
|
<Filename Value="..\pocheckerconsts.pas"/>
|
||||||
|
<IsPartOfProject Value="True"/>
|
||||||
|
<UnitName Value="pocheckerconsts"/>
|
||||||
|
</Unit5>
|
||||||
</Units>
|
</Units>
|
||||||
</ProjectOptions>
|
</ProjectOptions>
|
||||||
<CompilerOptions>
|
<CompilerOptions>
|
||||||
|
@ -7,7 +7,7 @@ uses
|
|||||||
cthreads,
|
cthreads,
|
||||||
{$ENDIF}{$ENDIF}
|
{$ENDIF}{$ENDIF}
|
||||||
Interfaces, // this includes the LCL widgetset
|
Interfaces, // this includes the LCL widgetset
|
||||||
Forms, pocheckermain, pofamilies, resultdlg, simplepofiles;
|
Forms, pocheckermain, pofamilies, resultdlg, simplepofiles, pocheckerconsts;
|
||||||
|
|
||||||
{$R *.res}
|
{$R *.res}
|
||||||
|
|
||||||
|
@ -15,7 +15,7 @@ object PoCheckerForm: TPoCheckerForm
|
|||||||
AnchorSideTop.Control = SelectTestLabel
|
AnchorSideTop.Control = SelectTestLabel
|
||||||
AnchorSideTop.Side = asrBottom
|
AnchorSideTop.Side = asrBottom
|
||||||
Left = 201
|
Left = 201
|
||||||
Height = 174
|
Height = 150
|
||||||
Top = 28
|
Top = 28
|
||||||
Width = 373
|
Width = 373
|
||||||
Anchors = [akTop, akLeft, akRight, akBottom]
|
Anchors = [akTop, akLeft, akRight, akBottom]
|
||||||
@ -38,10 +38,16 @@ object PoCheckerForm: TPoCheckerForm
|
|||||||
ParentFont = False
|
ParentFont = False
|
||||||
end
|
end
|
||||||
object OpenBtn: TBitBtn
|
object OpenBtn: TBitBtn
|
||||||
|
AnchorSideLeft.Control = RunBtn
|
||||||
|
AnchorSideRight.Control = RunBtn
|
||||||
|
AnchorSideRight.Side = asrBottom
|
||||||
|
AnchorSideBottom.Control = RunBtn
|
||||||
Left = 8
|
Left = 8
|
||||||
Height = 63
|
Height = 63
|
||||||
Top = 33
|
Top = 33
|
||||||
Width = 184
|
Width = 184
|
||||||
|
Anchors = [akLeft, akRight, akBottom]
|
||||||
|
BorderSpacing.Bottom = 6
|
||||||
Caption = '&Open a po-file'
|
Caption = '&Open a po-file'
|
||||||
Glyph.Data = {
|
Glyph.Data = {
|
||||||
36040000424D3604000000000000360000002800000010000000100000000100
|
36040000424D3604000000000000360000002800000010000000100000000100
|
||||||
@ -83,16 +89,12 @@ object PoCheckerForm: TPoCheckerForm
|
|||||||
TabOrder = 1
|
TabOrder = 1
|
||||||
end
|
end
|
||||||
object RunBtn: TBitBtn
|
object RunBtn: TBitBtn
|
||||||
AnchorSideLeft.Control = OpenBtn
|
|
||||||
AnchorSideTop.Control = OpenBtn
|
|
||||||
AnchorSideTop.Side = asrBottom
|
AnchorSideTop.Side = asrBottom
|
||||||
AnchorSideRight.Control = OpenBtn
|
|
||||||
AnchorSideRight.Side = asrBottom
|
AnchorSideRight.Side = asrBottom
|
||||||
Left = 8
|
Left = 8
|
||||||
Height = 63
|
Height = 63
|
||||||
Top = 102
|
Top = 102
|
||||||
Width = 184
|
Width = 184
|
||||||
Anchors = [akTop, akLeft, akRight]
|
|
||||||
BorderSpacing.Top = 6
|
BorderSpacing.Top = 6
|
||||||
Caption = '&Run Selected Tests'
|
Caption = '&Run Selected Tests'
|
||||||
Enabled = False
|
Enabled = False
|
||||||
@ -114,7 +116,7 @@ object PoCheckerForm: TPoCheckerForm
|
|||||||
Left = 8
|
Left = 8
|
||||||
Height = 14
|
Height = 14
|
||||||
Top = 8
|
Top = 8
|
||||||
Width = 62
|
Width = 66
|
||||||
Caption = 'Current Test:'
|
Caption = 'Current Test:'
|
||||||
ParentColor = False
|
ParentColor = False
|
||||||
end
|
end
|
||||||
@ -125,7 +127,7 @@ object PoCheckerForm: TPoCheckerForm
|
|||||||
Left = 8
|
Left = 8
|
||||||
Height = 14
|
Height = 14
|
||||||
Top = 22
|
Top = 22
|
||||||
Width = 69
|
Width = 75
|
||||||
Caption = 'Current po-file:'
|
Caption = 'Current po-file:'
|
||||||
ParentColor = False
|
ParentColor = False
|
||||||
end
|
end
|
||||||
@ -134,7 +136,7 @@ object PoCheckerForm: TPoCheckerForm
|
|||||||
AnchorSideLeft.Side = asrBottom
|
AnchorSideLeft.Side = asrBottom
|
||||||
AnchorSideTop.Control = CurTestHeaderLabel
|
AnchorSideTop.Control = CurTestHeaderLabel
|
||||||
AnchorSideTop.Side = asrCenter
|
AnchorSideTop.Side = asrCenter
|
||||||
Left = 76
|
Left = 80
|
||||||
Height = 14
|
Height = 14
|
||||||
Top = 8
|
Top = 8
|
||||||
Width = 64
|
Width = 64
|
||||||
@ -147,10 +149,10 @@ object PoCheckerForm: TPoCheckerForm
|
|||||||
AnchorSideLeft.Side = asrBottom
|
AnchorSideLeft.Side = asrBottom
|
||||||
AnchorSideTop.Control = CurPoHeaderLabel
|
AnchorSideTop.Control = CurPoHeaderLabel
|
||||||
AnchorSideTop.Side = asrCenter
|
AnchorSideTop.Side = asrCenter
|
||||||
Left = 83
|
Left = 89
|
||||||
Height = 14
|
Height = 14
|
||||||
Top = 22
|
Top = 22
|
||||||
Width = 56
|
Width = 55
|
||||||
BorderSpacing.Around = 6
|
BorderSpacing.Around = 6
|
||||||
Caption = 'CurPoLabel'
|
Caption = 'CurPoLabel'
|
||||||
ParentColor = False
|
ParentColor = False
|
||||||
@ -158,9 +160,9 @@ object PoCheckerForm: TPoCheckerForm
|
|||||||
end
|
end
|
||||||
object NoErrLabel: TLabel
|
object NoErrLabel: TLabel
|
||||||
Left = 8
|
Left = 8
|
||||||
Height = 25
|
Height = 24
|
||||||
Top = 231
|
Top = 232
|
||||||
Width = 149
|
Width = 152
|
||||||
Anchors = [akLeft, akBottom]
|
Anchors = [akLeft, akBottom]
|
||||||
Caption = 'No errors found'
|
Caption = 'No errors found'
|
||||||
Font.Color = clGreen
|
Font.Color = clGreen
|
||||||
@ -175,14 +177,26 @@ object PoCheckerForm: TPoCheckerForm
|
|||||||
AnchorSideTop.Side = asrBottom
|
AnchorSideTop.Side = asrBottom
|
||||||
Left = 201
|
Left = 201
|
||||||
Height = 17
|
Height = 17
|
||||||
Top = 208
|
Top = 184
|
||||||
Width = 64
|
Width = 61
|
||||||
BorderSpacing.Top = 6
|
BorderSpacing.Top = 6
|
||||||
Caption = 'Select All'
|
Caption = 'Select All'
|
||||||
Enabled = False
|
Enabled = False
|
||||||
OnClick = SelectAllCheckBoxClick
|
OnClick = SelectAllCheckBoxClick
|
||||||
TabOrder = 4
|
TabOrder = 4
|
||||||
end
|
end
|
||||||
|
object FindAllPOsCheckBox: TCheckBox
|
||||||
|
AnchorSideLeft.Control = SelectAllCheckBox
|
||||||
|
AnchorSideTop.Control = SelectAllCheckBox
|
||||||
|
AnchorSideTop.Side = asrBottom
|
||||||
|
Left = 201
|
||||||
|
Height = 17
|
||||||
|
Top = 207
|
||||||
|
Width = 142
|
||||||
|
BorderSpacing.Top = 6
|
||||||
|
Caption = 'Find all translated PO files'
|
||||||
|
TabOrder = 5
|
||||||
|
end
|
||||||
object OpenDialog: TOpenDialog
|
object OpenDialog: TOpenDialog
|
||||||
Filter = 'po-files (*.po)|*.po|all files|*'
|
Filter = 'po-files (*.po)|*.po|all files|*'
|
||||||
Options = [ofFileMustExist, ofEnableSizing, ofViewDetail]
|
Options = [ofFileMustExist, ofEnableSizing, ofViewDetail]
|
||||||
|
@ -25,14 +25,15 @@ interface
|
|||||||
|
|
||||||
uses
|
uses
|
||||||
Classes, SysUtils, FileUtil, Forms, Controls, Graphics, Dialogs,
|
Classes, SysUtils, FileUtil, Forms, Controls, Graphics, Dialogs,
|
||||||
StdCtrls, LCLProc, CheckLst, Buttons, ExtCtrls,
|
StdCtrls, LCLProc, CheckLst, Buttons, ExtCtrls, Translations,
|
||||||
SimplePoFiles, PoFamilies, ResultDlg;
|
SimplePoFiles, PoFamilies, ResultDlg, pocheckerconsts;
|
||||||
|
|
||||||
type
|
type
|
||||||
|
|
||||||
{ TPoCheckerForm }
|
{ TPoCheckerForm }
|
||||||
|
|
||||||
TPoCheckerForm = class(TForm)
|
TPoCheckerForm = class(TForm)
|
||||||
|
FindAllPOsCheckBox: TCheckBox;
|
||||||
SelectAllCheckBox: TCheckBox;
|
SelectAllCheckBox: TCheckBox;
|
||||||
CurTestHeaderLabel: TLabel;
|
CurTestHeaderLabel: TLabel;
|
||||||
CurPoHeaderLabel: TLabel;
|
CurPoHeaderLabel: TLabel;
|
||||||
@ -67,20 +68,6 @@ type
|
|||||||
|
|
||||||
end;
|
end;
|
||||||
|
|
||||||
resourcestring
|
|
||||||
rsPoChecker = 'PO File Checker';
|
|
||||||
sSelectAllTests = 'Select all tests';
|
|
||||||
sUnSelectAllTests = 'Unselect all tests';
|
|
||||||
sCannotFindMaster = 'Cannot find master po file:' + LineEnding + '%s' + LineEnding + 'for selected file' + LineEnding + '%s';
|
|
||||||
sNotAProperFileName = 'Selected filename' + LineEnding + '%s' + LineEnding + 'does not seem to be a proper name for a po-file';
|
|
||||||
sErrorOnCreate = 'Error creating an instance of TPoFamily:' + LineEnding + '%s';
|
|
||||||
sErrorOnCleanup = 'An unrecoverable error occurred' + LineEnding + '%s' + LineEnding + 'Please close the program';
|
|
||||||
|
|
||||||
sTotalErrors = 'Total errors found : %d';
|
|
||||||
sTotalWarnings = 'Total warnings found: %d';
|
|
||||||
//sNoErrorsFound = 'No errors found.';
|
|
||||||
sNoTestSelected = 'There are no tests selected.';
|
|
||||||
|
|
||||||
var
|
var
|
||||||
PoCheckerForm: TPoCheckerForm;
|
PoCheckerForm: TPoCheckerForm;
|
||||||
|
|
||||||
@ -91,10 +78,31 @@ implementation
|
|||||||
{ TPoCheckerForm }
|
{ TPoCheckerForm }
|
||||||
|
|
||||||
procedure TPoCheckerForm.FormCreate(Sender: TObject);
|
procedure TPoCheckerForm.FormCreate(Sender: TObject);
|
||||||
|
var
|
||||||
|
Lang, T: string;
|
||||||
begin
|
begin
|
||||||
|
//Initializing translation
|
||||||
|
Lang := GetEnvironmentVariableUTF8('LANG');
|
||||||
|
if Lang = '' then
|
||||||
|
LCLGetLanguageIDs(Lang, T);
|
||||||
|
if Lang <> '' then
|
||||||
|
begin
|
||||||
|
Lang := copy(Lang, 1, 2);
|
||||||
|
Translations.TranslateUnitResourceStrings('PoCheckerConsts', '..'+DirectorySeparator+'languages'+DirectorySeparator+'pocheckerconsts.'+Lang+'.po');
|
||||||
|
Translations.TranslateUnitResourceStrings('LCLStrConsts', '..'+DirectorySeparator+'languages'+DirectorySeparator+'lclstrconsts.'+Lang+'.po');
|
||||||
|
end;
|
||||||
|
|
||||||
|
Caption := sGUIPoFileCheckingTool;
|
||||||
|
SelectTestLabel.Caption := sSelectTestTypes;
|
||||||
|
FindAllPOsCheckBox.Caption := sFindAllTranslatedPoFiles;
|
||||||
|
OpenBtn.Caption := sOpenAPoFile;
|
||||||
|
RunBtn.Caption := sRunSelectedTests;
|
||||||
|
NoErrLabel.Caption := sNoErrorsFound;
|
||||||
FillTestListBox;
|
FillTestListBox;
|
||||||
ClearAndDisableStatusPanel;
|
ClearAndDisableStatusPanel;
|
||||||
NoErrLabel.Visible := False;
|
NoErrLabel.Visible := False;
|
||||||
|
CurTestHeaderLabel.Caption := sCurrentTest;
|
||||||
|
CurPoHeaderLabel.Caption := sCurrentPoFile;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
procedure TPoCheckerForm.FormDestroy(Sender: TObject);
|
procedure TPoCheckerForm.FormDestroy(Sender: TObject);
|
||||||
@ -158,8 +166,16 @@ procedure TPoCheckerForm.FillTestListBox;
|
|||||||
var
|
var
|
||||||
Opt: TPoTestOption;
|
Opt: TPoTestOption;
|
||||||
begin
|
begin
|
||||||
for Opt := Low(PoTestOptionNames) to High(PoTestOptionNames) do
|
for Opt := Low(PoTestOptionNames) to Pred(High(PoTestOptionNames)) do
|
||||||
TestListBox.Items.Add(PoTestOptionNames[Opt]);
|
case Opt of
|
||||||
|
ptoCheckNrOfItems: TestListBox.Items.Add(sCheckNumberOfItems);
|
||||||
|
ptoCheckFormatArgs: TestListBox.Items.Add(sCheckForIncompatibleFormatArguments);
|
||||||
|
ptoCheckMissingIdentifiers: TestListBox.Items.Add(sCheckMissingIdentifiers);
|
||||||
|
ptoCheckMismatchedOriginals: TestListBox.Items.Add(sCheckForMismatchesInUntranslatedStrings);
|
||||||
|
ptoCheckDuplicateOriginals: TestListBox.Items.Add(sCheckForDuplicateUntranslatedValues);
|
||||||
|
else
|
||||||
|
TestListBox.Items.Add(PoTestOptionNames[Opt]);
|
||||||
|
end;
|
||||||
SelectAllCheckBox.Caption := sSelectAllTests;
|
SelectAllCheckBox.Caption := sSelectAllTests;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
@ -169,7 +185,7 @@ var
|
|||||||
Index: Integer;
|
Index: Integer;
|
||||||
begin
|
begin
|
||||||
Result := [];
|
Result := [];
|
||||||
for Opt := Low(TpoTestOption) to High(TPoTestOption) do
|
for Opt := Low(TpoTestOption) to Pred(High(TPoTestOption)) do
|
||||||
begin
|
begin
|
||||||
Index := Ord(Opt);
|
Index := Ord(Opt);
|
||||||
if (Index < TestListBox.Count) then
|
if (Index < TestListBox.Count) then
|
||||||
@ -178,6 +194,8 @@ begin
|
|||||||
Result := Result + [Opt];
|
Result := Result + [Opt];
|
||||||
end;
|
end;
|
||||||
end;
|
end;
|
||||||
|
if FindAllPOsCheckBox.Checked then
|
||||||
|
Result := Result + [High(TPoTestOption)];
|
||||||
end;
|
end;
|
||||||
|
|
||||||
procedure TPoCheckerForm.ShowError(const Msg: String);
|
procedure TPoCheckerForm.ShowError(const Msg: String);
|
||||||
|
181
components/pochecker/languages/pocheckerconsts.po
Normal file
181
components/pochecker/languages/pocheckerconsts.po
Normal file
@ -0,0 +1,181 @@
|
|||||||
|
msgid ""
|
||||||
|
msgstr "Content-Type: text/plain; charset=UTF-8"
|
||||||
|
|
||||||
|
#: pocheckerconsts.rspochecker
|
||||||
|
msgid "PO File Checker"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: pocheckerconsts.scannotfindmaster
|
||||||
|
msgid ""
|
||||||
|
"Cannot find master po file:\n"
|
||||||
|
"%s\n"
|
||||||
|
"for selected file\n"
|
||||||
|
"%s\n"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: pocheckerconsts.scheckforduplicateuntranslatedvalues
|
||||||
|
msgid "Check for duplicate untranslated values"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: pocheckerconsts.scheckforincompatibleformatarguments
|
||||||
|
msgid "Check for incompatible format arguments"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: pocheckerconsts.scheckformismatchesinuntranslatedstrings
|
||||||
|
msgid "Check for mismatches in untranslated strings"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: pocheckerconsts.scheckmissingidentifiers
|
||||||
|
msgid "Check missing identifiers"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: pocheckerconsts.schecknumberofitems
|
||||||
|
msgid "Check number of items"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: pocheckerconsts.scopycaption
|
||||||
|
msgid "Copy to clipboard"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: pocheckerconsts.scurrentpofile
|
||||||
|
msgid "Current po-file:"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: pocheckerconsts.scurrenttest
|
||||||
|
msgid "Current Test:"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: pocheckerconsts.sduplicatelinenrwithvalue
|
||||||
|
msgid "[Line %d] %s"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: pocheckerconsts.sduplicateoriginals
|
||||||
|
msgid "The (untranslated) value \"%s\" is used for more than 1 entry:"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: pocheckerconsts.serroroncleanup
|
||||||
|
msgid ""
|
||||||
|
"An unrecoverable error occurred\n"
|
||||||
|
"%s\n"
|
||||||
|
"Please close the program\n"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: pocheckerconsts.serroroncreate
|
||||||
|
msgid ""
|
||||||
|
"Error creating an instance of TPoFamily:\n"
|
||||||
|
"%s\n"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: pocheckerconsts.serrorsbytest
|
||||||
|
msgid "Errors / warnings reported by %s for:"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: pocheckerconsts.sfindalltranslatedpofiles
|
||||||
|
msgid "Find all translated po-files"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: pocheckerconsts.sguipofilecheckingtool
|
||||||
|
msgid "GUI Po-file checking tool"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: pocheckerconsts.sidentifiernotfoundin
|
||||||
|
msgid "Identifier [%s] not found in %s"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: pocheckerconsts.sincompatibleformatargs
|
||||||
|
msgid "[Line: %d] Incompatible format() arguments for:"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: pocheckerconsts.slineinfilename
|
||||||
|
msgid "[Line %d] in %s:"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: pocheckerconsts.slinenr
|
||||||
|
msgid "[Line: %d]"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: pocheckerconsts.smissingmasteridentifier
|
||||||
|
msgid "Identifier [%s] found in %s, but it does not exist in %s"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: pocheckerconsts.snoerrorsfound
|
||||||
|
msgid "No errors found"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: pocheckerconsts.snotaproperfilename
|
||||||
|
msgid ""
|
||||||
|
"Selected filename\n"
|
||||||
|
"%s\n"
|
||||||
|
"does not seem to be a proper name for a po-file\n"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: pocheckerconsts.snotestselected
|
||||||
|
msgid "There are no tests selected."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: pocheckerconsts.snrerrorsfound
|
||||||
|
msgid "Found %d errors."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: pocheckerconsts.snrofitemsmismatch
|
||||||
|
msgid "Mismatch in number of items for master and child"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: pocheckerconsts.snrofitemsmismatchd
|
||||||
|
msgid "%s: %d items"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: pocheckerconsts.snrwarningsfound
|
||||||
|
msgid "Found %d warnings."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: pocheckerconsts.sopenapofile
|
||||||
|
msgid "&Open a po-file"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: pocheckerconsts.soriginal
|
||||||
|
msgid "Original"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: pocheckerconsts.sresults
|
||||||
|
msgid "Results"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: pocheckerconsts.srunselectedtests
|
||||||
|
msgid "&Run Selected Tests"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: pocheckerconsts.ssavecaption
|
||||||
|
msgid "Save to file"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: pocheckerconsts.ssaveerror
|
||||||
|
msgid ""
|
||||||
|
"Error saving file:\n"
|
||||||
|
"%s\n"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: pocheckerconsts.sselectalltests
|
||||||
|
msgid "Select all tests"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: pocheckerconsts.sselecttesttypes
|
||||||
|
msgid "Select test types"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: pocheckerconsts.stotalerrors
|
||||||
|
msgid "Total errors / warnings found: %d"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: pocheckerconsts.stotalwarnings
|
||||||
|
msgid "Total warnings found: %d"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: pocheckerconsts.stranslation
|
||||||
|
msgid "Translation"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: pocheckerconsts.sunselectalltests
|
||||||
|
msgid "Unselect all tests"
|
||||||
|
msgstr ""
|
||||||
|
|
203
components/pochecker/languages/pocheckerconsts.ru.po
Normal file
203
components/pochecker/languages/pocheckerconsts.ru.po
Normal file
@ -0,0 +1,203 @@
|
|||||||
|
msgid ""
|
||||||
|
msgstr ""
|
||||||
|
"Content-Type: text/plain; charset=UTF-8\n"
|
||||||
|
"Project-Id-Version: \n"
|
||||||
|
"POT-Creation-Date: \n"
|
||||||
|
"PO-Revision-Date: \n"
|
||||||
|
"Last-Translator: Maxim Ganetsky <maxkill@mail.ru>\n"
|
||||||
|
"Language-Team: \n"
|
||||||
|
"MIME-Version: 1.0\n"
|
||||||
|
"Content-Transfer-Encoding: 8bit\n"
|
||||||
|
|
||||||
|
#: pocheckerconsts.rspochecker
|
||||||
|
msgid "PO File Checker"
|
||||||
|
msgstr "Проверка файлов PO"
|
||||||
|
|
||||||
|
#: pocheckerconsts.scannotfindmaster
|
||||||
|
msgid ""
|
||||||
|
"Cannot find master po file:\n"
|
||||||
|
"%s\n"
|
||||||
|
"for selected file\n"
|
||||||
|
"%s\n"
|
||||||
|
msgstr ""
|
||||||
|
"Невозможно найти главный файл PO:\n"
|
||||||
|
"%s\n"
|
||||||
|
"для выбранного файла\n"
|
||||||
|
"%s\n"
|
||||||
|
|
||||||
|
#: pocheckerconsts.scheckforduplicateuntranslatedvalues
|
||||||
|
msgid "Check for duplicate untranslated values"
|
||||||
|
msgstr "Поиск дублирующихся непереведённых строк"
|
||||||
|
|
||||||
|
#: pocheckerconsts.scheckforincompatibleformatarguments
|
||||||
|
msgid "Check for incompatible format arguments"
|
||||||
|
msgstr "Поиск несовместимых аргументов форматирования"
|
||||||
|
|
||||||
|
#: pocheckerconsts.scheckformismatchesinuntranslatedstrings
|
||||||
|
msgid "Check for mismatches in untranslated strings"
|
||||||
|
msgstr "Поиск несоответствий непереведённых строк"
|
||||||
|
|
||||||
|
#: pocheckerconsts.scheckmissingidentifiers
|
||||||
|
msgid "Check missing identifiers"
|
||||||
|
msgstr "Поиск отсутствующих идентификаторов"
|
||||||
|
|
||||||
|
#: pocheckerconsts.schecknumberofitems
|
||||||
|
msgid "Check number of items"
|
||||||
|
msgstr "Проверка числа строк"
|
||||||
|
|
||||||
|
#: pocheckerconsts.scopycaption
|
||||||
|
msgid "Copy to clipboard"
|
||||||
|
msgstr "Копировать в буфер обмена"
|
||||||
|
|
||||||
|
#: pocheckerconsts.scurrentpofile
|
||||||
|
msgid "Current po-file:"
|
||||||
|
msgstr "Текущий файл PO:"
|
||||||
|
|
||||||
|
#: pocheckerconsts.scurrenttest
|
||||||
|
msgid "Current Test:"
|
||||||
|
msgstr "Текущий тест:"
|
||||||
|
|
||||||
|
#: pocheckerconsts.sduplicatelinenrwithvalue
|
||||||
|
msgid "[Line %d] %s"
|
||||||
|
msgstr "[Строка %d] %s"
|
||||||
|
|
||||||
|
#: pocheckerconsts.sduplicateoriginals
|
||||||
|
msgid "The (untranslated) value \"%s\" is used for more than 1 entry:"
|
||||||
|
msgstr "Исходное значение \"%s\" имеется в нескольких элементах:"
|
||||||
|
|
||||||
|
#: pocheckerconsts.serroroncleanup
|
||||||
|
msgid ""
|
||||||
|
"An unrecoverable error occurred\n"
|
||||||
|
"%s\n"
|
||||||
|
"Please close the program\n"
|
||||||
|
msgstr ""
|
||||||
|
"Возникла неустранимая ошибка\n"
|
||||||
|
"%s\n"
|
||||||
|
"Программу следует закрыть\n"
|
||||||
|
|
||||||
|
#: pocheckerconsts.serroroncreate
|
||||||
|
msgid ""
|
||||||
|
"Error creating an instance of TPoFamily:\n"
|
||||||
|
"%s\n"
|
||||||
|
msgstr ""
|
||||||
|
"Ошибка создания экземпляра класса TPoFamily:\n"
|
||||||
|
"%s\n"
|
||||||
|
|
||||||
|
#: pocheckerconsts.serrorsbytest
|
||||||
|
msgid "Errors / warnings reported by %s for:"
|
||||||
|
msgstr "Ошибки и предупреждения, найденные %s для:"
|
||||||
|
|
||||||
|
#: pocheckerconsts.sfindalltranslatedpofiles
|
||||||
|
msgid "Find all translated po-files"
|
||||||
|
msgstr "Найти все переведённые файлы PO"
|
||||||
|
|
||||||
|
#: pocheckerconsts.sguipofilecheckingtool
|
||||||
|
msgid "GUI Po-file checking tool"
|
||||||
|
msgstr "Средство проверки файлов PO"
|
||||||
|
|
||||||
|
#: pocheckerconsts.sidentifiernotfoundin
|
||||||
|
msgid "Identifier [%s] not found in %s"
|
||||||
|
msgstr "Идентификатор [%s] не найден в %s"
|
||||||
|
|
||||||
|
#: pocheckerconsts.sincompatibleformatargs
|
||||||
|
msgid "[Line: %d] Incompatible format() arguments for:"
|
||||||
|
msgstr "[Строка: %d] Несовместимые аргументы для Format() в:"
|
||||||
|
|
||||||
|
#: pocheckerconsts.slineinfilename
|
||||||
|
msgid "[Line %d] in %s:"
|
||||||
|
msgstr "[Строка %d] в %s:"
|
||||||
|
|
||||||
|
#: pocheckerconsts.slinenr
|
||||||
|
msgid "[Line: %d]"
|
||||||
|
msgstr "[Строка: %d]"
|
||||||
|
|
||||||
|
#: pocheckerconsts.smissingmasteridentifier
|
||||||
|
msgid "Identifier [%s] found in %s, but it does not exist in %s"
|
||||||
|
msgstr "Идентификатор [%s] найден в %s, но отсутствует в %s"
|
||||||
|
|
||||||
|
#: pocheckerconsts.snoerrorsfound
|
||||||
|
msgid "No errors found"
|
||||||
|
msgstr "Ошибок не найдено"
|
||||||
|
|
||||||
|
#: pocheckerconsts.snotaproperfilename
|
||||||
|
msgid ""
|
||||||
|
"Selected filename\n"
|
||||||
|
"%s\n"
|
||||||
|
"does not seem to be a proper name for a po-file\n"
|
||||||
|
msgstr ""
|
||||||
|
"Выбранное имя файла\n"
|
||||||
|
"%s\n"
|
||||||
|
"не выглядит корректно для файла PO\n"
|
||||||
|
|
||||||
|
#: pocheckerconsts.snotestselected
|
||||||
|
msgid "There are no tests selected."
|
||||||
|
msgstr "Не выбрано ни одного теста."
|
||||||
|
|
||||||
|
#: pocheckerconsts.snrerrorsfound
|
||||||
|
msgid "Found %d errors."
|
||||||
|
msgstr "Найдено ошибок: %d"
|
||||||
|
|
||||||
|
#: pocheckerconsts.snrofitemsmismatch
|
||||||
|
msgid "Mismatch in number of items for master and child"
|
||||||
|
msgstr "Несоответствие количества элементов в главном и дочернем файлах"
|
||||||
|
|
||||||
|
#: pocheckerconsts.snrofitemsmismatchd
|
||||||
|
msgid "%s: %d items"
|
||||||
|
msgstr "%s: %d элементов"
|
||||||
|
|
||||||
|
#: pocheckerconsts.snrwarningsfound
|
||||||
|
msgid "Found %d warnings."
|
||||||
|
msgstr "Найдено предупреждений: %d"
|
||||||
|
|
||||||
|
#: pocheckerconsts.sopenapofile
|
||||||
|
msgid "&Open a po-file"
|
||||||
|
msgstr "&Открыть файл PO"
|
||||||
|
|
||||||
|
#: pocheckerconsts.soriginal
|
||||||
|
msgid "Original"
|
||||||
|
msgstr "Исходная строка"
|
||||||
|
|
||||||
|
#: pocheckerconsts.sresults
|
||||||
|
msgid "Results"
|
||||||
|
msgstr "Результаты"
|
||||||
|
|
||||||
|
#: pocheckerconsts.srunselectedtests
|
||||||
|
msgid "&Run Selected Tests"
|
||||||
|
msgstr "&Запустить выбранные тесты"
|
||||||
|
|
||||||
|
#: pocheckerconsts.ssavecaption
|
||||||
|
msgid "Save to file"
|
||||||
|
msgstr "Сохранить в файл"
|
||||||
|
|
||||||
|
#: pocheckerconsts.ssaveerror
|
||||||
|
msgid ""
|
||||||
|
"Error saving file:\n"
|
||||||
|
"%s\n"
|
||||||
|
msgstr ""
|
||||||
|
"Ошибка сохранения файла:\n"
|
||||||
|
"%s\n"
|
||||||
|
|
||||||
|
#: pocheckerconsts.sselectalltests
|
||||||
|
msgid "Select all tests"
|
||||||
|
msgstr "Выбрать все тесты"
|
||||||
|
|
||||||
|
#: pocheckerconsts.sselecttesttypes
|
||||||
|
msgid "Select test types"
|
||||||
|
msgstr "Выбор тестов"
|
||||||
|
|
||||||
|
#: pocheckerconsts.stotalerrors
|
||||||
|
msgid "Total errors / warnings found: %d"
|
||||||
|
msgstr "Всего найдено ошибок и предупреждений: %d"
|
||||||
|
|
||||||
|
#: pocheckerconsts.stotalwarnings
|
||||||
|
msgid "Total warnings found: %d"
|
||||||
|
msgstr "Всего найдено предупреждений: %d"
|
||||||
|
|
||||||
|
#: pocheckerconsts.stranslation
|
||||||
|
msgid "Translation"
|
||||||
|
msgstr "Перевод"
|
||||||
|
|
||||||
|
#: pocheckerconsts.sunselectalltests
|
||||||
|
msgid "Unselect all tests"
|
||||||
|
msgstr "Отменить выбор всех тестов"
|
||||||
|
|
@ -20,7 +20,7 @@
|
|||||||
<Description Value="Check the validity of translated PO files.
|
<Description Value="Check the validity of translated PO files.
|
||||||
"/>
|
"/>
|
||||||
<Version Major="1"/>
|
<Version Major="1"/>
|
||||||
<Files Count="6">
|
<Files Count="7">
|
||||||
<Item1>
|
<Item1>
|
||||||
<Filename Value="resultdlg.pp"/>
|
<Filename Value="resultdlg.pp"/>
|
||||||
<UnitName Value="ResultDlg"/>
|
<UnitName Value="ResultDlg"/>
|
||||||
@ -46,7 +46,15 @@
|
|||||||
<Filename Value="pocheckermain.lfm"/>
|
<Filename Value="pocheckermain.lfm"/>
|
||||||
<Type Value="LFM"/>
|
<Type Value="LFM"/>
|
||||||
</Item6>
|
</Item6>
|
||||||
|
<Item7>
|
||||||
|
<Filename Value="pocheckerconsts.pas"/>
|
||||||
|
<UnitName Value="pocheckerconsts"/>
|
||||||
|
</Item7>
|
||||||
</Files>
|
</Files>
|
||||||
|
<i18n>
|
||||||
|
<EnableI18N Value="True"/>
|
||||||
|
<OutDir Value="languages"/>
|
||||||
|
</i18n>
|
||||||
<Type Value="RunAndDesignTime"/>
|
<Type Value="RunAndDesignTime"/>
|
||||||
<RequiredPkgs Count="3">
|
<RequiredPkgs Count="3">
|
||||||
<Item1>
|
<Item1>
|
||||||
@ -65,5 +73,8 @@
|
|||||||
<PublishOptions>
|
<PublishOptions>
|
||||||
<Version Value="2"/>
|
<Version Value="2"/>
|
||||||
</PublishOptions>
|
</PublishOptions>
|
||||||
|
<CustomOptions Items="ExternHelp" Version="2">
|
||||||
|
<_ExternHelp Items="Count"/>
|
||||||
|
</CustomOptions>
|
||||||
</Package>
|
</Package>
|
||||||
</CONFIG>
|
</CONFIG>
|
||||||
|
@ -2,20 +2,21 @@
|
|||||||
This source is only used to compile and install the package.
|
This source is only used to compile and install the package.
|
||||||
}
|
}
|
||||||
|
|
||||||
unit PoChecker;
|
unit PoChecker;
|
||||||
|
|
||||||
interface
|
interface
|
||||||
|
|
||||||
uses
|
uses
|
||||||
ResultDlg, PoFamilies, pocheckermain, SimplePoFiles, LazarusPackageIntf;
|
ResultDlg, PoFamilies, pocheckermain, SimplePoFiles, pocheckerconsts,
|
||||||
|
LazarusPackageIntf;
|
||||||
|
|
||||||
implementation
|
implementation
|
||||||
|
|
||||||
procedure Register;
|
procedure Register;
|
||||||
begin
|
begin
|
||||||
RegisterUnit('pocheckermain', @pocheckermain.Register);
|
RegisterUnit('pocheckermain', @pocheckermain.Register);
|
||||||
end;
|
end;
|
||||||
|
|
||||||
initialization
|
initialization
|
||||||
RegisterPackage('PoChecker', @Register);
|
RegisterPackage('PoChecker', @Register);
|
||||||
end.
|
end.
|
||||||
|
64
components/pochecker/pocheckerconsts.pas
Normal file
64
components/pochecker/pocheckerconsts.pas
Normal file
@ -0,0 +1,64 @@
|
|||||||
|
unit pocheckerconsts;
|
||||||
|
|
||||||
|
{$mode objfpc}{$H+}
|
||||||
|
|
||||||
|
interface
|
||||||
|
|
||||||
|
resourcestring
|
||||||
|
//Main form
|
||||||
|
rsPoChecker = 'PO File Checker';
|
||||||
|
sSelectAllTests = 'Select all tests';
|
||||||
|
sUnSelectAllTests = 'Unselect all tests';
|
||||||
|
sGUIPoFileCheckingTool = 'GUI Po-file checking tool';
|
||||||
|
sSelectTestTypes = 'Select test types';
|
||||||
|
sOpenAPoFile = '&Open a po-file';
|
||||||
|
sRunSelectedTests = '&Run Selected Tests';
|
||||||
|
sCannotFindMaster = 'Cannot find master po file:' + LineEnding + '%s' + LineEnding + 'for selected file' + LineEnding + '%s';
|
||||||
|
sNotAProperFileName = 'Selected filename' + LineEnding + '%s' + LineEnding + 'does not seem to be a proper name for a po-file';
|
||||||
|
sErrorOnCreate = 'Error creating an instance of TPoFamily:' + LineEnding + '%s';
|
||||||
|
sErrorOnCleanup = 'An unrecoverable error occurred' + LineEnding + '%s' + LineEnding + 'Please close the program';
|
||||||
|
|
||||||
|
sTotalErrors = 'Total errors / warnings found: %d';
|
||||||
|
sTotalWarnings = 'Total warnings found: %d';
|
||||||
|
sNoErrorsFound = 'No errors found';
|
||||||
|
sCurrentTest = 'Current Test:';
|
||||||
|
sCurrentPoFile = 'Current po-file:';
|
||||||
|
sNoTestSelected = 'There are no tests selected.';
|
||||||
|
|
||||||
|
//Result form
|
||||||
|
sSaveError = 'Error saving file:' + LineEnding + '%s';
|
||||||
|
sSaveCaption = 'Save to file';
|
||||||
|
sResults = 'Results';
|
||||||
|
sCopyCaption = 'Copy to clipboard';
|
||||||
|
|
||||||
|
//PoFamiles
|
||||||
|
sOriginal = 'Original';
|
||||||
|
sTranslation = 'Translation';
|
||||||
|
sErrorsByTest = 'Errors / warnings reported by %s for:';
|
||||||
|
sCheckNumberOfItems = 'Check number of items';
|
||||||
|
sCheckForIncompatibleFormatArguments = 'Check for incompatible format '
|
||||||
|
+'arguments';
|
||||||
|
sCheckMissingIdentifiers = 'Check missing identifiers';
|
||||||
|
sCheckForMismatchesInUntranslatedStrings = 'Check for mismatches in '
|
||||||
|
+'untranslated strings';
|
||||||
|
sCheckForDuplicateUntranslatedValues = 'Check for duplicate untranslated '
|
||||||
|
+'values';
|
||||||
|
sFindAllTranslatedPoFiles = 'Find all translated po-files';
|
||||||
|
sIncompatibleFormatArgs = '[Line: %d] Incompatible format() arguments for:' ;
|
||||||
|
|
||||||
|
sNrErrorsFound = 'Found %d errors.';
|
||||||
|
sNrWarningsFound = 'Found %d warnings.';
|
||||||
|
sLineInFileName = '[Line %d] in %s:';
|
||||||
|
sIdentifierNotFoundIn = 'Identifier [%s] not found in %s';
|
||||||
|
sMissingMasterIdentifier = 'Identifier [%s] found in %s, but it does not exist in %s';
|
||||||
|
sLineNr = '[Line: %d]';
|
||||||
|
|
||||||
|
sNrOfItemsMisMatch = 'Mismatch in number of items for master and child';
|
||||||
|
sNrOfItemsMismatchD = '%s: %d items';
|
||||||
|
|
||||||
|
sDuplicateOriginals = 'The (untranslated) value "%s" is used for more than 1 entry:';
|
||||||
|
sDuplicateLineNrWithValue = '[Line %d] %s';
|
||||||
|
implementation
|
||||||
|
|
||||||
|
end.
|
||||||
|
|
@ -15,8 +15,8 @@ object PoCheckerForm: TPoCheckerForm
|
|||||||
AnchorSideTop.Control = SelectTestLabel
|
AnchorSideTop.Control = SelectTestLabel
|
||||||
AnchorSideTop.Side = asrBottom
|
AnchorSideTop.Side = asrBottom
|
||||||
Left = 201
|
Left = 201
|
||||||
Height = 169
|
Height = 150
|
||||||
Top = 33
|
Top = 28
|
||||||
Width = 373
|
Width = 373
|
||||||
Anchors = [akTop, akLeft, akRight, akBottom]
|
Anchors = [akTop, akLeft, akRight, akBottom]
|
||||||
BorderSpacing.Top = 6
|
BorderSpacing.Top = 6
|
||||||
@ -28,9 +28,9 @@ object PoCheckerForm: TPoCheckerForm
|
|||||||
AnchorSideLeft.Control = OpenBtn
|
AnchorSideLeft.Control = OpenBtn
|
||||||
AnchorSideLeft.Side = asrBottom
|
AnchorSideLeft.Side = asrBottom
|
||||||
Left = 201
|
Left = 201
|
||||||
Height = 19
|
Height = 14
|
||||||
Top = 8
|
Top = 8
|
||||||
Width = 144
|
Width = 97
|
||||||
BorderSpacing.Left = 9
|
BorderSpacing.Left = 9
|
||||||
Caption = 'Select test types'
|
Caption = 'Select test types'
|
||||||
Font.Style = [fsBold]
|
Font.Style = [fsBold]
|
||||||
@ -38,10 +38,16 @@ object PoCheckerForm: TPoCheckerForm
|
|||||||
ParentFont = False
|
ParentFont = False
|
||||||
end
|
end
|
||||||
object OpenBtn: TBitBtn
|
object OpenBtn: TBitBtn
|
||||||
|
AnchorSideLeft.Control = RunBtn
|
||||||
|
AnchorSideRight.Control = RunBtn
|
||||||
|
AnchorSideRight.Side = asrBottom
|
||||||
|
AnchorSideBottom.Control = RunBtn
|
||||||
Left = 8
|
Left = 8
|
||||||
Height = 63
|
Height = 63
|
||||||
Top = 33
|
Top = 33
|
||||||
Width = 184
|
Width = 184
|
||||||
|
Anchors = [akLeft, akRight, akBottom]
|
||||||
|
BorderSpacing.Bottom = 6
|
||||||
Caption = '&Open a po-file'
|
Caption = '&Open a po-file'
|
||||||
Glyph.Data = {
|
Glyph.Data = {
|
||||||
36040000424D3604000000000000360000002800000010000000100000000100
|
36040000424D3604000000000000360000002800000010000000100000000100
|
||||||
@ -83,16 +89,12 @@ object PoCheckerForm: TPoCheckerForm
|
|||||||
TabOrder = 1
|
TabOrder = 1
|
||||||
end
|
end
|
||||||
object RunBtn: TBitBtn
|
object RunBtn: TBitBtn
|
||||||
AnchorSideLeft.Control = OpenBtn
|
|
||||||
AnchorSideTop.Control = OpenBtn
|
|
||||||
AnchorSideTop.Side = asrBottom
|
AnchorSideTop.Side = asrBottom
|
||||||
AnchorSideRight.Control = OpenBtn
|
|
||||||
AnchorSideRight.Side = asrBottom
|
AnchorSideRight.Side = asrBottom
|
||||||
Left = 8
|
Left = 8
|
||||||
Height = 63
|
Height = 63
|
||||||
Top = 102
|
Top = 102
|
||||||
Width = 184
|
Width = 184
|
||||||
Anchors = [akTop, akLeft, akRight]
|
|
||||||
BorderSpacing.Top = 6
|
BorderSpacing.Top = 6
|
||||||
Caption = '&Run Selected Tests'
|
Caption = '&Run Selected Tests'
|
||||||
Enabled = False
|
Enabled = False
|
||||||
@ -112,9 +114,9 @@ object PoCheckerForm: TPoCheckerForm
|
|||||||
TabOrder = 3
|
TabOrder = 3
|
||||||
object CurTestHeaderLabel: TLabel
|
object CurTestHeaderLabel: TLabel
|
||||||
Left = 8
|
Left = 8
|
||||||
Height = 19
|
Height = 14
|
||||||
Top = 8
|
Top = 8
|
||||||
Width = 96
|
Width = 66
|
||||||
Caption = 'Current Test:'
|
Caption = 'Current Test:'
|
||||||
ParentColor = False
|
ParentColor = False
|
||||||
end
|
end
|
||||||
@ -123,9 +125,9 @@ object PoCheckerForm: TPoCheckerForm
|
|||||||
AnchorSideTop.Control = CurTestHeaderLabel
|
AnchorSideTop.Control = CurTestHeaderLabel
|
||||||
AnchorSideTop.Side = asrBottom
|
AnchorSideTop.Side = asrBottom
|
||||||
Left = 8
|
Left = 8
|
||||||
Height = 19
|
Height = 14
|
||||||
Top = 27
|
Top = 22
|
||||||
Width = 111
|
Width = 75
|
||||||
Caption = 'Current po-file:'
|
Caption = 'Current po-file:'
|
||||||
ParentColor = False
|
ParentColor = False
|
||||||
end
|
end
|
||||||
@ -134,10 +136,10 @@ object PoCheckerForm: TPoCheckerForm
|
|||||||
AnchorSideLeft.Side = asrBottom
|
AnchorSideLeft.Side = asrBottom
|
||||||
AnchorSideTop.Control = CurTestHeaderLabel
|
AnchorSideTop.Control = CurTestHeaderLabel
|
||||||
AnchorSideTop.Side = asrCenter
|
AnchorSideTop.Side = asrCenter
|
||||||
Left = 110
|
Left = 80
|
||||||
Height = 19
|
Height = 14
|
||||||
Top = 8
|
Top = 8
|
||||||
Width = 95
|
Width = 64
|
||||||
BorderSpacing.Around = 6
|
BorderSpacing.Around = 6
|
||||||
Caption = 'CurTestLabel'
|
Caption = 'CurTestLabel'
|
||||||
ParentColor = False
|
ParentColor = False
|
||||||
@ -147,10 +149,10 @@ object PoCheckerForm: TPoCheckerForm
|
|||||||
AnchorSideLeft.Side = asrBottom
|
AnchorSideLeft.Side = asrBottom
|
||||||
AnchorSideTop.Control = CurPoHeaderLabel
|
AnchorSideTop.Control = CurPoHeaderLabel
|
||||||
AnchorSideTop.Side = asrCenter
|
AnchorSideTop.Side = asrCenter
|
||||||
Left = 125
|
Left = 89
|
||||||
Height = 19
|
Height = 14
|
||||||
Top = 27
|
Top = 22
|
||||||
Width = 82
|
Width = 55
|
||||||
BorderSpacing.Around = 6
|
BorderSpacing.Around = 6
|
||||||
Caption = 'CurPoLabel'
|
Caption = 'CurPoLabel'
|
||||||
ParentColor = False
|
ParentColor = False
|
||||||
@ -160,7 +162,7 @@ object PoCheckerForm: TPoCheckerForm
|
|||||||
Left = 8
|
Left = 8
|
||||||
Height = 24
|
Height = 24
|
||||||
Top = 232
|
Top = 232
|
||||||
Width = 171
|
Width = 152
|
||||||
Anchors = [akLeft, akBottom]
|
Anchors = [akLeft, akBottom]
|
||||||
Caption = 'No errors found'
|
Caption = 'No errors found'
|
||||||
Font.Color = clGreen
|
Font.Color = clGreen
|
||||||
@ -174,15 +176,27 @@ object PoCheckerForm: TPoCheckerForm
|
|||||||
AnchorSideTop.Control = TestListBox
|
AnchorSideTop.Control = TestListBox
|
||||||
AnchorSideTop.Side = asrBottom
|
AnchorSideTop.Side = asrBottom
|
||||||
Left = 201
|
Left = 201
|
||||||
Height = 23
|
Height = 17
|
||||||
Top = 208
|
Top = 184
|
||||||
Width = 97
|
Width = 61
|
||||||
BorderSpacing.Top = 6
|
BorderSpacing.Top = 6
|
||||||
Caption = 'Select All'
|
Caption = 'Select All'
|
||||||
Enabled = False
|
Enabled = False
|
||||||
OnClick = SelectAllCheckBoxClick
|
OnClick = SelectAllCheckBoxClick
|
||||||
TabOrder = 4
|
TabOrder = 4
|
||||||
end
|
end
|
||||||
|
object FindAllPOsCheckBox: TCheckBox
|
||||||
|
AnchorSideLeft.Control = SelectAllCheckBox
|
||||||
|
AnchorSideTop.Control = SelectAllCheckBox
|
||||||
|
AnchorSideTop.Side = asrBottom
|
||||||
|
Left = 201
|
||||||
|
Height = 17
|
||||||
|
Top = 207
|
||||||
|
Width = 142
|
||||||
|
BorderSpacing.Top = 6
|
||||||
|
Caption = 'Find all translated PO files'
|
||||||
|
TabOrder = 5
|
||||||
|
end
|
||||||
object OpenDialog: TOpenDialog
|
object OpenDialog: TOpenDialog
|
||||||
Filter = 'po-files (*.po)|*.po|all files|*'
|
Filter = 'po-files (*.po)|*.po|all files|*'
|
||||||
Options = [ofFileMustExist, ofEnableSizing, ofViewDetail]
|
Options = [ofFileMustExist, ofEnableSizing, ofViewDetail]
|
||||||
|
@ -26,13 +26,14 @@ interface
|
|||||||
uses
|
uses
|
||||||
Classes, SysUtils, FileUtil, Forms, Controls, Graphics, Dialogs,
|
Classes, SysUtils, FileUtil, Forms, Controls, Graphics, Dialogs,
|
||||||
StdCtrls, LCLProc, CheckLst, Buttons, ExtCtrls, IDEIntf, MenuIntf,
|
StdCtrls, LCLProc, CheckLst, Buttons, ExtCtrls, IDEIntf, MenuIntf,
|
||||||
SimplePoFiles, PoFamilies, ResultDlg;
|
SimplePoFiles, PoFamilies, ResultDlg, pocheckerconsts;
|
||||||
|
|
||||||
type
|
type
|
||||||
|
|
||||||
{ TPoCheckerForm }
|
{ TPoCheckerForm }
|
||||||
|
|
||||||
TPoCheckerForm = class(TForm)
|
TPoCheckerForm = class(TForm)
|
||||||
|
FindAllPOsCheckBox: TCheckBox;
|
||||||
SelectAllCheckBox: TCheckBox;
|
SelectAllCheckBox: TCheckBox;
|
||||||
CurTestHeaderLabel: TLabel;
|
CurTestHeaderLabel: TLabel;
|
||||||
CurPoHeaderLabel: TLabel;
|
CurPoHeaderLabel: TLabel;
|
||||||
@ -67,20 +68,6 @@ type
|
|||||||
|
|
||||||
end;
|
end;
|
||||||
|
|
||||||
resourcestring
|
|
||||||
rsPoChecker = 'PO File Checker';
|
|
||||||
sSelectAllTests = 'Select all tests';
|
|
||||||
sUnSelectAllTests = 'Unselect all tests';
|
|
||||||
sCannotFindMaster = 'Cannot find master po file:' + LineEnding + '%s' + LineEnding + 'for selected file' + LineEnding + '%s';
|
|
||||||
sNotAProperFileName = 'Selected filename' + LineEnding + '%s' + LineEnding + 'does not seem to be a proper name for a po-file';
|
|
||||||
sErrorOnCreate = 'Error creating an instance of TPoFamily:' + LineEnding + '%s';
|
|
||||||
sErrorOnCleanup = 'An unrecoverable error occurred' + LineEnding + '%s' + LineEnding + 'Please close the program';
|
|
||||||
|
|
||||||
sTotalErrors = 'Total errors / warnings found: %d';
|
|
||||||
sTotalWarnings = 'Total warnings found: %d';
|
|
||||||
//sNoErrorsFound = 'No errors found.';
|
|
||||||
sNoTestSelected = 'There are no tests selected.';
|
|
||||||
|
|
||||||
var
|
var
|
||||||
PoCheckerForm: TPoCheckerForm;
|
PoCheckerForm: TPoCheckerForm;
|
||||||
|
|
||||||
@ -102,9 +89,17 @@ end;
|
|||||||
|
|
||||||
procedure TPoCheckerForm.FormCreate(Sender: TObject);
|
procedure TPoCheckerForm.FormCreate(Sender: TObject);
|
||||||
begin
|
begin
|
||||||
|
Caption := sGUIPoFileCheckingTool;
|
||||||
|
SelectTestLabel.Caption := sSelectTestTypes;
|
||||||
|
FindAllPOsCheckBox.Caption := sFindAllTranslatedPoFiles;
|
||||||
|
OpenBtn.Caption := sOpenAPoFile;
|
||||||
|
RunBtn.Caption := sRunSelectedTests;
|
||||||
|
NoErrLabel.Caption := sNoErrorsFound;
|
||||||
FillTestListBox;
|
FillTestListBox;
|
||||||
ClearAndDisableStatusPanel;
|
ClearAndDisableStatusPanel;
|
||||||
NoErrLabel.Visible := False;
|
NoErrLabel.Visible := False;
|
||||||
|
CurTestHeaderLabel.Caption := sCurrentTest;
|
||||||
|
CurPoHeaderLabel.Caption := sCurrentPoFile;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
procedure TPoCheckerForm.FormDestroy(Sender: TObject);
|
procedure TPoCheckerForm.FormDestroy(Sender: TObject);
|
||||||
@ -168,8 +163,16 @@ procedure TPoCheckerForm.FillTestListBox;
|
|||||||
var
|
var
|
||||||
Opt: TPoTestOption;
|
Opt: TPoTestOption;
|
||||||
begin
|
begin
|
||||||
for Opt := Low(PoTestOptionNames) to High(PoTestOptionNames) do
|
for Opt := Low(PoTestOptionNames) to Pred(High(PoTestOptionNames)) do
|
||||||
TestListBox.Items.Add(PoTestOptionNames[Opt]);
|
case Opt of
|
||||||
|
ptoCheckNrOfItems: TestListBox.Items.Add(sCheckNumberOfItems);
|
||||||
|
ptoCheckFormatArgs: TestListBox.Items.Add(sCheckForIncompatibleFormatArguments);
|
||||||
|
ptoCheckMissingIdentifiers: TestListBox.Items.Add(sCheckMissingIdentifiers);
|
||||||
|
ptoCheckMismatchedOriginals: TestListBox.Items.Add(sCheckForMismatchesInUntranslatedStrings);
|
||||||
|
ptoCheckDuplicateOriginals: TestListBox.Items.Add(sCheckForDuplicateUntranslatedValues);
|
||||||
|
else
|
||||||
|
TestListBox.Items.Add(PoTestOptionNames[Opt]);
|
||||||
|
end;
|
||||||
SelectAllCheckBox.Caption := sSelectAllTests;
|
SelectAllCheckBox.Caption := sSelectAllTests;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
@ -179,7 +182,7 @@ var
|
|||||||
Index: Integer;
|
Index: Integer;
|
||||||
begin
|
begin
|
||||||
Result := [];
|
Result := [];
|
||||||
for Opt := Low(TpoTestOption) to High(TPoTestOption) do
|
for Opt := Low(TpoTestOption) to Pred(High(TPoTestOption)) do
|
||||||
begin
|
begin
|
||||||
Index := Ord(Opt);
|
Index := Ord(Opt);
|
||||||
if (Index < TestListBox.Count) then
|
if (Index < TestListBox.Count) then
|
||||||
@ -188,6 +191,8 @@ begin
|
|||||||
Result := Result + [Opt];
|
Result := Result + [Opt];
|
||||||
end;
|
end;
|
||||||
end;
|
end;
|
||||||
|
if FindAllPOsCheckBox.Checked then
|
||||||
|
Result := Result + [High(TPoTestOption)];
|
||||||
end;
|
end;
|
||||||
|
|
||||||
procedure TPoCheckerForm.ShowError(const Msg: String);
|
procedure TPoCheckerForm.ShowError(const Msg: String);
|
||||||
|
@ -9,7 +9,7 @@ interface
|
|||||||
uses
|
uses
|
||||||
Classes, SysUtils, LCLProc, FileUtil, StringHashList,
|
Classes, SysUtils, LCLProc, FileUtil, StringHashList,
|
||||||
//{$IFDEF UNIX}{$IFNDEF DisableCWString}, cwstring{$ENDIF}{$ENDIF},
|
//{$IFDEF UNIX}{$IFNDEF DisableCWString}, cwstring{$ENDIF}{$ENDIF},
|
||||||
SimplePoFiles;
|
SimplePoFiles, pocheckerconsts;
|
||||||
|
|
||||||
Type
|
Type
|
||||||
|
|
||||||
@ -99,37 +99,18 @@ const
|
|||||||
|
|
||||||
Divider = '-------------------------------------------------------';
|
Divider = '-------------------------------------------------------';
|
||||||
|
|
||||||
resourcestring
|
|
||||||
sOriginal = 'Original';
|
|
||||||
sTranslation = 'Translation';
|
|
||||||
sErrorsByTest = 'Errors / warnings reported by %s for:';
|
|
||||||
sCheckFormatArgs = 'CheckFormatArgs';
|
|
||||||
sCheckMissingIdentifiers = 'CheckMissingIdentifiers';
|
|
||||||
sCheckNrOfItems = 'CheckNrOfItems';
|
|
||||||
sCheckMismatchedOriginals = 'CheckMismatchedOriginals';
|
|
||||||
sCheckDuplicateOriginals = 'CheckDuplicateOriginals';
|
|
||||||
sIncompatibleFormatArgs = '[Line: %d] Incompatible format() arguments for:' ;
|
|
||||||
|
|
||||||
sNrErrorsFound = 'Found %d errors.';
|
|
||||||
sNrWarningsFound = 'Found %d warnings.';
|
|
||||||
sLineInFileName = '[Line %d] in %s:';
|
|
||||||
sIdentifierNotFoundIn = 'Identifier [%s] not found in %s';
|
|
||||||
sMissingMasterIdentifier = 'Identifier [%s] found in %s, but it does not exist in %s';
|
|
||||||
sLineNr = '[Line: %d]';
|
|
||||||
|
|
||||||
sFormatArgsID = '%s %s';
|
sFormatArgsID = '%s %s';
|
||||||
sFormatArgsValues = '%s%s" (= %s)';
|
sFormatArgsValues = '%s%s" (= %s)';
|
||||||
|
|
||||||
sNrOfItemsMisMatch = 'Mismatch in number of items for master and child';
|
|
||||||
sNrOfItemsMismatchM = '%s: %d items';
|
|
||||||
sNrOfItemsMismatchC = '%s: %d items';
|
|
||||||
|
|
||||||
sMismatchOriginalsID = '%s';
|
sMismatchOriginalsID = '%s';
|
||||||
sMismatchOriginalsM = '%s: %s';
|
sMismatchOriginalsM = '%s: %s';
|
||||||
sMismatchOriginalsC = '%s: %s';
|
sMismatchOriginalsC = '%s: %s';
|
||||||
|
|
||||||
sDuplicateOriginals = 'The (untranslated) value "%s" is used for more than 1 entry:';
|
sCheckFormatArgs = 'CheckFormatArgs';
|
||||||
sDuplicateLineNrWithValue = '[Line %d] %s';
|
sCheckNrOfItems = 'CheckNrOfItems';
|
||||||
|
sCheckMissingIdentifiers = 'CheckMissingIdentifiers';
|
||||||
|
sCheckMismatchedOriginals = 'CheckMismatchedOriginals';
|
||||||
|
sCheckDuplicateOriginals = 'CheckDuplicateOriginals';
|
||||||
|
|
||||||
//Helper functions
|
//Helper functions
|
||||||
|
|
||||||
@ -338,8 +319,8 @@ begin
|
|||||||
ErrorLog.Add(Divider);
|
ErrorLog.Add(Divider);
|
||||||
ErrorLog.Add('');
|
ErrorLog.Add('');
|
||||||
ErrorLog.Add(sNrOfItemsMismatch);
|
ErrorLog.Add(sNrOfItemsMismatch);
|
||||||
ErrorLog.Add(Format(sNrOfItemsMismatchM,[ShortMasterName,FMaster.Count]));
|
ErrorLog.Add(Format(sNrOfItemsMismatchD,[ShortMasterName,FMaster.Count]));
|
||||||
ErrorLog.Add(Format(sNrOfItemsMismatchC,[ShortChildName,FChild.Count]));
|
ErrorLog.Add(Format(sNrOfItemsMismatchD,[ShortChildName,FChild.Count]));
|
||||||
ErrorLog.Add(Divider);
|
ErrorLog.Add(Divider);
|
||||||
ErrorLog.Add('');
|
ErrorLog.Add('');
|
||||||
ErrorLog.Add('');
|
ErrorLog.Add('');
|
||||||
|
@ -27,10 +27,10 @@ object ResultDlgForm: TResultDlgForm
|
|||||||
object CloseBtn: TBitBtn
|
object CloseBtn: TBitBtn
|
||||||
AnchorSideRight.Control = Panel1
|
AnchorSideRight.Control = Panel1
|
||||||
AnchorSideRight.Side = asrBottom
|
AnchorSideRight.Side = asrBottom
|
||||||
Left = 661
|
Left = 643
|
||||||
Height = 26
|
Height = 26
|
||||||
Top = 12
|
Top = 12
|
||||||
Width = 71
|
Width = 89
|
||||||
Anchors = [akRight]
|
Anchors = [akRight]
|
||||||
AutoSize = True
|
AutoSize = True
|
||||||
BorderSpacing.Right = 10
|
BorderSpacing.Right = 10
|
||||||
@ -41,10 +41,10 @@ object ResultDlgForm: TResultDlgForm
|
|||||||
end
|
end
|
||||||
object SaveBtn: TBitBtn
|
object SaveBtn: TBitBtn
|
||||||
AnchorSideRight.Control = CloseBtn
|
AnchorSideRight.Control = CloseBtn
|
||||||
Left = 553
|
Left = 534
|
||||||
Height = 26
|
Height = 26
|
||||||
Top = 12
|
Top = 12
|
||||||
Width = 98
|
Width = 99
|
||||||
Anchors = [akRight]
|
Anchors = [akRight]
|
||||||
AutoSize = True
|
AutoSize = True
|
||||||
BorderSpacing.Around = 10
|
BorderSpacing.Around = 10
|
||||||
@ -90,10 +90,10 @@ object ResultDlgForm: TResultDlgForm
|
|||||||
end
|
end
|
||||||
object CopyBtn: TBitBtn
|
object CopyBtn: TBitBtn
|
||||||
AnchorSideRight.Control = SaveBtn
|
AnchorSideRight.Control = SaveBtn
|
||||||
Left = 416
|
Left = 395
|
||||||
Height = 26
|
Height = 26
|
||||||
Top = 12
|
Top = 12
|
||||||
Width = 127
|
Width = 129
|
||||||
Anchors = [akRight]
|
Anchors = [akRight]
|
||||||
AutoSize = True
|
AutoSize = True
|
||||||
BorderSpacing.Around = 10
|
BorderSpacing.Around = 10
|
||||||
@ -668,6 +668,16 @@ object ResultDlgForm: TResultDlgForm
|
|||||||
ReadOnly = True
|
ReadOnly = True
|
||||||
ScrollBars = ssAutoBoth
|
ScrollBars = ssAutoBoth
|
||||||
BracketHighlightStyle = sbhsBoth
|
BracketHighlightStyle = sbhsBoth
|
||||||
|
BracketMatchColor.Background = clNone
|
||||||
|
BracketMatchColor.Foreground = clNone
|
||||||
|
BracketMatchColor.Style = [fsBold]
|
||||||
|
FoldedCodeColor.Background = clNone
|
||||||
|
FoldedCodeColor.Foreground = clGray
|
||||||
|
FoldedCodeColor.FrameColor = clGray
|
||||||
|
MouseLinkColor.Background = clNone
|
||||||
|
MouseLinkColor.Foreground = clBlue
|
||||||
|
LineHighlightColor.Background = clNone
|
||||||
|
LineHighlightColor.Foreground = clNone
|
||||||
inline SynLeftGutterPartList1: TSynGutterPartList
|
inline SynLeftGutterPartList1: TSynGutterPartList
|
||||||
object SynGutterLineNumber1: TSynGutterLineNumber
|
object SynGutterLineNumber1: TSynGutterLineNumber
|
||||||
Width = 17
|
Width = 17
|
||||||
|
@ -6,7 +6,8 @@ interface
|
|||||||
|
|
||||||
uses
|
uses
|
||||||
Classes, SysUtils, FileUtil, Forms, Controls, Graphics, Dialogs,
|
Classes, SysUtils, FileUtil, Forms, Controls, Graphics, Dialogs,
|
||||||
ExtCtrls, Buttons, ClipBrd, LCLType, LCLProc, SynEdit, SynHighlighterPo;
|
ExtCtrls, Buttons, ClipBrd, LCLType, LCLProc, SynEdit, SynHighlighterPo,
|
||||||
|
pocheckerconsts;
|
||||||
|
|
||||||
type
|
type
|
||||||
|
|
||||||
@ -38,16 +39,11 @@ implementation
|
|||||||
|
|
||||||
{$R *.lfm}
|
{$R *.lfm}
|
||||||
|
|
||||||
ResourceString
|
|
||||||
sSaveError = 'Error saving file:' + LineEnding + '%s';
|
|
||||||
sSaveCaption = 'Save to file';
|
|
||||||
sCopyCaption = 'Copy to clipboard';
|
|
||||||
|
|
||||||
|
|
||||||
{ TResultDlgForm }
|
{ TResultDlgForm }
|
||||||
|
|
||||||
procedure TResultDlgForm.FormCreate(Sender: TObject);
|
procedure TResultDlgForm.FormCreate(Sender: TObject);
|
||||||
begin
|
begin
|
||||||
|
Caption := sResults;
|
||||||
LogMemo.Lines.Clear;
|
LogMemo.Lines.Clear;
|
||||||
LogMemo.Align := alClient;
|
LogMemo.Align := alClient;
|
||||||
FLog := TStringList.Create;
|
FLog := TStringList.Create;
|
||||||
|
Loading…
Reference in New Issue
Block a user