mirror of
https://gitlab.com/freepascal.org/lazarus/lazarus.git
synced 2025-04-07 06:38:06 +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.pp 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.pas svneol=native#text/plain
|
||||
components/pochecker/pocheckerconsts.pas svneol=native#text/pascal
|
||||
components/pochecker/pocheckermain.lfm svneol=native#text/plain
|
||||
components/pochecker/pocheckermain.pp svneol=native#text/plain
|
||||
components/pochecker/pofamilies.pp svneol=native#text/plain
|
||||
|
@ -4,11 +4,13 @@
|
||||
<Version Value="9"/>
|
||||
<PathDelim Value="\"/>
|
||||
<General>
|
||||
<Flags>
|
||||
<SaveOnlyProjectUnits Value="True"/>
|
||||
</Flags>
|
||||
<SessionStorage Value="InProjectDir"/>
|
||||
<MainUnit Value="0"/>
|
||||
<ResourceType Value="res"/>
|
||||
<UseXPManifest Value="True"/>
|
||||
<Icon Value="0"/>
|
||||
</General>
|
||||
<i18n>
|
||||
<EnableI18N LFM="False"/>
|
||||
@ -37,7 +39,7 @@
|
||||
<PackageName Value="LCL"/>
|
||||
</Item2>
|
||||
</RequiredPackages>
|
||||
<Units Count="5">
|
||||
<Units Count="6">
|
||||
<Unit0>
|
||||
<Filename Value="pochecker.lpr"/>
|
||||
<IsPartOfProject Value="True"/>
|
||||
@ -46,25 +48,34 @@
|
||||
<Unit1>
|
||||
<Filename Value="pocheckermain.pp"/>
|
||||
<IsPartOfProject Value="True"/>
|
||||
<ComponentName Value="PoCheckerForm"/>
|
||||
<HasResources Value="True"/>
|
||||
<ResourceBaseClass Value="Form"/>
|
||||
<UnitName Value="pocheckermain"/>
|
||||
</Unit1>
|
||||
<Unit2>
|
||||
<Filename Value="..\pofamilies.pp"/>
|
||||
<IsPartOfProject Value="True"/>
|
||||
<UnitName Value="pofamilies"/>
|
||||
<UnitName Value="PoFamilies"/>
|
||||
</Unit2>
|
||||
<Unit3>
|
||||
<Filename Value="..\resultdlg.pp"/>
|
||||
<IsPartOfProject Value="True"/>
|
||||
<ComponentName Value="ResultDlgForm"/>
|
||||
<HasResources Value="True"/>
|
||||
<UnitName Value="resultdlg"/>
|
||||
<ResourceBaseClass Value="Form"/>
|
||||
<UnitName Value="ResultDlg"/>
|
||||
</Unit3>
|
||||
<Unit4>
|
||||
<Filename Value="..\simplepofiles.pp"/>
|
||||
<IsPartOfProject Value="True"/>
|
||||
<UnitName Value="simplepofiles"/>
|
||||
</Unit4>
|
||||
<Unit5>
|
||||
<Filename Value="..\pocheckerconsts.pas"/>
|
||||
<IsPartOfProject Value="True"/>
|
||||
<UnitName Value="pocheckerconsts"/>
|
||||
</Unit5>
|
||||
</Units>
|
||||
</ProjectOptions>
|
||||
<CompilerOptions>
|
||||
|
@ -7,7 +7,7 @@ uses
|
||||
cthreads,
|
||||
{$ENDIF}{$ENDIF}
|
||||
Interfaces, // this includes the LCL widgetset
|
||||
Forms, pocheckermain, pofamilies, resultdlg, simplepofiles;
|
||||
Forms, pocheckermain, pofamilies, resultdlg, simplepofiles, pocheckerconsts;
|
||||
|
||||
{$R *.res}
|
||||
|
||||
|
@ -15,7 +15,7 @@ object PoCheckerForm: TPoCheckerForm
|
||||
AnchorSideTop.Control = SelectTestLabel
|
||||
AnchorSideTop.Side = asrBottom
|
||||
Left = 201
|
||||
Height = 174
|
||||
Height = 150
|
||||
Top = 28
|
||||
Width = 373
|
||||
Anchors = [akTop, akLeft, akRight, akBottom]
|
||||
@ -38,10 +38,16 @@ object PoCheckerForm: TPoCheckerForm
|
||||
ParentFont = False
|
||||
end
|
||||
object OpenBtn: TBitBtn
|
||||
AnchorSideLeft.Control = RunBtn
|
||||
AnchorSideRight.Control = RunBtn
|
||||
AnchorSideRight.Side = asrBottom
|
||||
AnchorSideBottom.Control = RunBtn
|
||||
Left = 8
|
||||
Height = 63
|
||||
Top = 33
|
||||
Width = 184
|
||||
Anchors = [akLeft, akRight, akBottom]
|
||||
BorderSpacing.Bottom = 6
|
||||
Caption = '&Open a po-file'
|
||||
Glyph.Data = {
|
||||
36040000424D3604000000000000360000002800000010000000100000000100
|
||||
@ -83,16 +89,12 @@ object PoCheckerForm: TPoCheckerForm
|
||||
TabOrder = 1
|
||||
end
|
||||
object RunBtn: TBitBtn
|
||||
AnchorSideLeft.Control = OpenBtn
|
||||
AnchorSideTop.Control = OpenBtn
|
||||
AnchorSideTop.Side = asrBottom
|
||||
AnchorSideRight.Control = OpenBtn
|
||||
AnchorSideRight.Side = asrBottom
|
||||
Left = 8
|
||||
Height = 63
|
||||
Top = 102
|
||||
Width = 184
|
||||
Anchors = [akTop, akLeft, akRight]
|
||||
BorderSpacing.Top = 6
|
||||
Caption = '&Run Selected Tests'
|
||||
Enabled = False
|
||||
@ -114,7 +116,7 @@ object PoCheckerForm: TPoCheckerForm
|
||||
Left = 8
|
||||
Height = 14
|
||||
Top = 8
|
||||
Width = 62
|
||||
Width = 66
|
||||
Caption = 'Current Test:'
|
||||
ParentColor = False
|
||||
end
|
||||
@ -125,7 +127,7 @@ object PoCheckerForm: TPoCheckerForm
|
||||
Left = 8
|
||||
Height = 14
|
||||
Top = 22
|
||||
Width = 69
|
||||
Width = 75
|
||||
Caption = 'Current po-file:'
|
||||
ParentColor = False
|
||||
end
|
||||
@ -134,7 +136,7 @@ object PoCheckerForm: TPoCheckerForm
|
||||
AnchorSideLeft.Side = asrBottom
|
||||
AnchorSideTop.Control = CurTestHeaderLabel
|
||||
AnchorSideTop.Side = asrCenter
|
||||
Left = 76
|
||||
Left = 80
|
||||
Height = 14
|
||||
Top = 8
|
||||
Width = 64
|
||||
@ -147,10 +149,10 @@ object PoCheckerForm: TPoCheckerForm
|
||||
AnchorSideLeft.Side = asrBottom
|
||||
AnchorSideTop.Control = CurPoHeaderLabel
|
||||
AnchorSideTop.Side = asrCenter
|
||||
Left = 83
|
||||
Left = 89
|
||||
Height = 14
|
||||
Top = 22
|
||||
Width = 56
|
||||
Width = 55
|
||||
BorderSpacing.Around = 6
|
||||
Caption = 'CurPoLabel'
|
||||
ParentColor = False
|
||||
@ -158,9 +160,9 @@ object PoCheckerForm: TPoCheckerForm
|
||||
end
|
||||
object NoErrLabel: TLabel
|
||||
Left = 8
|
||||
Height = 25
|
||||
Top = 231
|
||||
Width = 149
|
||||
Height = 24
|
||||
Top = 232
|
||||
Width = 152
|
||||
Anchors = [akLeft, akBottom]
|
||||
Caption = 'No errors found'
|
||||
Font.Color = clGreen
|
||||
@ -175,14 +177,26 @@ object PoCheckerForm: TPoCheckerForm
|
||||
AnchorSideTop.Side = asrBottom
|
||||
Left = 201
|
||||
Height = 17
|
||||
Top = 208
|
||||
Width = 64
|
||||
Top = 184
|
||||
Width = 61
|
||||
BorderSpacing.Top = 6
|
||||
Caption = 'Select All'
|
||||
Enabled = False
|
||||
OnClick = SelectAllCheckBoxClick
|
||||
TabOrder = 4
|
||||
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
|
||||
Filter = 'po-files (*.po)|*.po|all files|*'
|
||||
Options = [ofFileMustExist, ofEnableSizing, ofViewDetail]
|
||||
|
@ -25,14 +25,15 @@ interface
|
||||
|
||||
uses
|
||||
Classes, SysUtils, FileUtil, Forms, Controls, Graphics, Dialogs,
|
||||
StdCtrls, LCLProc, CheckLst, Buttons, ExtCtrls,
|
||||
SimplePoFiles, PoFamilies, ResultDlg;
|
||||
StdCtrls, LCLProc, CheckLst, Buttons, ExtCtrls, Translations,
|
||||
SimplePoFiles, PoFamilies, ResultDlg, pocheckerconsts;
|
||||
|
||||
type
|
||||
|
||||
{ TPoCheckerForm }
|
||||
|
||||
TPoCheckerForm = class(TForm)
|
||||
FindAllPOsCheckBox: TCheckBox;
|
||||
SelectAllCheckBox: TCheckBox;
|
||||
CurTestHeaderLabel: TLabel;
|
||||
CurPoHeaderLabel: TLabel;
|
||||
@ -67,20 +68,6 @@ type
|
||||
|
||||
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
|
||||
PoCheckerForm: TPoCheckerForm;
|
||||
|
||||
@ -91,10 +78,31 @@ implementation
|
||||
{ TPoCheckerForm }
|
||||
|
||||
procedure TPoCheckerForm.FormCreate(Sender: TObject);
|
||||
var
|
||||
Lang, T: string;
|
||||
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;
|
||||
ClearAndDisableStatusPanel;
|
||||
NoErrLabel.Visible := False;
|
||||
CurTestHeaderLabel.Caption := sCurrentTest;
|
||||
CurPoHeaderLabel.Caption := sCurrentPoFile;
|
||||
end;
|
||||
|
||||
procedure TPoCheckerForm.FormDestroy(Sender: TObject);
|
||||
@ -158,8 +166,16 @@ procedure TPoCheckerForm.FillTestListBox;
|
||||
var
|
||||
Opt: TPoTestOption;
|
||||
begin
|
||||
for Opt := Low(PoTestOptionNames) to High(PoTestOptionNames) do
|
||||
TestListBox.Items.Add(PoTestOptionNames[Opt]);
|
||||
for Opt := Low(PoTestOptionNames) to Pred(High(PoTestOptionNames)) do
|
||||
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;
|
||||
end;
|
||||
|
||||
@ -169,7 +185,7 @@ var
|
||||
Index: Integer;
|
||||
begin
|
||||
Result := [];
|
||||
for Opt := Low(TpoTestOption) to High(TPoTestOption) do
|
||||
for Opt := Low(TpoTestOption) to Pred(High(TPoTestOption)) do
|
||||
begin
|
||||
Index := Ord(Opt);
|
||||
if (Index < TestListBox.Count) then
|
||||
@ -178,6 +194,8 @@ begin
|
||||
Result := Result + [Opt];
|
||||
end;
|
||||
end;
|
||||
if FindAllPOsCheckBox.Checked then
|
||||
Result := Result + [High(TPoTestOption)];
|
||||
end;
|
||||
|
||||
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.
|
||||
"/>
|
||||
<Version Major="1"/>
|
||||
<Files Count="6">
|
||||
<Files Count="7">
|
||||
<Item1>
|
||||
<Filename Value="resultdlg.pp"/>
|
||||
<UnitName Value="ResultDlg"/>
|
||||
@ -46,7 +46,15 @@
|
||||
<Filename Value="pocheckermain.lfm"/>
|
||||
<Type Value="LFM"/>
|
||||
</Item6>
|
||||
<Item7>
|
||||
<Filename Value="pocheckerconsts.pas"/>
|
||||
<UnitName Value="pocheckerconsts"/>
|
||||
</Item7>
|
||||
</Files>
|
||||
<i18n>
|
||||
<EnableI18N Value="True"/>
|
||||
<OutDir Value="languages"/>
|
||||
</i18n>
|
||||
<Type Value="RunAndDesignTime"/>
|
||||
<RequiredPkgs Count="3">
|
||||
<Item1>
|
||||
@ -65,5 +73,8 @@
|
||||
<PublishOptions>
|
||||
<Version Value="2"/>
|
||||
</PublishOptions>
|
||||
<CustomOptions Items="ExternHelp" Version="2">
|
||||
<_ExternHelp Items="Count"/>
|
||||
</CustomOptions>
|
||||
</Package>
|
||||
</CONFIG>
|
||||
|
@ -2,20 +2,21 @@
|
||||
This source is only used to compile and install the package.
|
||||
}
|
||||
|
||||
unit PoChecker;
|
||||
unit PoChecker;
|
||||
|
||||
interface
|
||||
|
||||
uses
|
||||
ResultDlg, PoFamilies, pocheckermain, SimplePoFiles, LazarusPackageIntf;
|
||||
ResultDlg, PoFamilies, pocheckermain, SimplePoFiles, pocheckerconsts,
|
||||
LazarusPackageIntf;
|
||||
|
||||
implementation
|
||||
|
||||
procedure Register;
|
||||
procedure Register;
|
||||
begin
|
||||
RegisterUnit('pocheckermain', @pocheckermain.Register);
|
||||
end;
|
||||
RegisterUnit('pocheckermain', @pocheckermain.Register);
|
||||
end;
|
||||
|
||||
initialization
|
||||
RegisterPackage('PoChecker', @Register);
|
||||
RegisterPackage('PoChecker', @Register);
|
||||
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.Side = asrBottom
|
||||
Left = 201
|
||||
Height = 169
|
||||
Top = 33
|
||||
Height = 150
|
||||
Top = 28
|
||||
Width = 373
|
||||
Anchors = [akTop, akLeft, akRight, akBottom]
|
||||
BorderSpacing.Top = 6
|
||||
@ -28,9 +28,9 @@ object PoCheckerForm: TPoCheckerForm
|
||||
AnchorSideLeft.Control = OpenBtn
|
||||
AnchorSideLeft.Side = asrBottom
|
||||
Left = 201
|
||||
Height = 19
|
||||
Height = 14
|
||||
Top = 8
|
||||
Width = 144
|
||||
Width = 97
|
||||
BorderSpacing.Left = 9
|
||||
Caption = 'Select test types'
|
||||
Font.Style = [fsBold]
|
||||
@ -38,10 +38,16 @@ object PoCheckerForm: TPoCheckerForm
|
||||
ParentFont = False
|
||||
end
|
||||
object OpenBtn: TBitBtn
|
||||
AnchorSideLeft.Control = RunBtn
|
||||
AnchorSideRight.Control = RunBtn
|
||||
AnchorSideRight.Side = asrBottom
|
||||
AnchorSideBottom.Control = RunBtn
|
||||
Left = 8
|
||||
Height = 63
|
||||
Top = 33
|
||||
Width = 184
|
||||
Anchors = [akLeft, akRight, akBottom]
|
||||
BorderSpacing.Bottom = 6
|
||||
Caption = '&Open a po-file'
|
||||
Glyph.Data = {
|
||||
36040000424D3604000000000000360000002800000010000000100000000100
|
||||
@ -83,16 +89,12 @@ object PoCheckerForm: TPoCheckerForm
|
||||
TabOrder = 1
|
||||
end
|
||||
object RunBtn: TBitBtn
|
||||
AnchorSideLeft.Control = OpenBtn
|
||||
AnchorSideTop.Control = OpenBtn
|
||||
AnchorSideTop.Side = asrBottom
|
||||
AnchorSideRight.Control = OpenBtn
|
||||
AnchorSideRight.Side = asrBottom
|
||||
Left = 8
|
||||
Height = 63
|
||||
Top = 102
|
||||
Width = 184
|
||||
Anchors = [akTop, akLeft, akRight]
|
||||
BorderSpacing.Top = 6
|
||||
Caption = '&Run Selected Tests'
|
||||
Enabled = False
|
||||
@ -112,9 +114,9 @@ object PoCheckerForm: TPoCheckerForm
|
||||
TabOrder = 3
|
||||
object CurTestHeaderLabel: TLabel
|
||||
Left = 8
|
||||
Height = 19
|
||||
Height = 14
|
||||
Top = 8
|
||||
Width = 96
|
||||
Width = 66
|
||||
Caption = 'Current Test:'
|
||||
ParentColor = False
|
||||
end
|
||||
@ -123,9 +125,9 @@ object PoCheckerForm: TPoCheckerForm
|
||||
AnchorSideTop.Control = CurTestHeaderLabel
|
||||
AnchorSideTop.Side = asrBottom
|
||||
Left = 8
|
||||
Height = 19
|
||||
Top = 27
|
||||
Width = 111
|
||||
Height = 14
|
||||
Top = 22
|
||||
Width = 75
|
||||
Caption = 'Current po-file:'
|
||||
ParentColor = False
|
||||
end
|
||||
@ -134,10 +136,10 @@ object PoCheckerForm: TPoCheckerForm
|
||||
AnchorSideLeft.Side = asrBottom
|
||||
AnchorSideTop.Control = CurTestHeaderLabel
|
||||
AnchorSideTop.Side = asrCenter
|
||||
Left = 110
|
||||
Height = 19
|
||||
Left = 80
|
||||
Height = 14
|
||||
Top = 8
|
||||
Width = 95
|
||||
Width = 64
|
||||
BorderSpacing.Around = 6
|
||||
Caption = 'CurTestLabel'
|
||||
ParentColor = False
|
||||
@ -147,10 +149,10 @@ object PoCheckerForm: TPoCheckerForm
|
||||
AnchorSideLeft.Side = asrBottom
|
||||
AnchorSideTop.Control = CurPoHeaderLabel
|
||||
AnchorSideTop.Side = asrCenter
|
||||
Left = 125
|
||||
Height = 19
|
||||
Top = 27
|
||||
Width = 82
|
||||
Left = 89
|
||||
Height = 14
|
||||
Top = 22
|
||||
Width = 55
|
||||
BorderSpacing.Around = 6
|
||||
Caption = 'CurPoLabel'
|
||||
ParentColor = False
|
||||
@ -160,7 +162,7 @@ object PoCheckerForm: TPoCheckerForm
|
||||
Left = 8
|
||||
Height = 24
|
||||
Top = 232
|
||||
Width = 171
|
||||
Width = 152
|
||||
Anchors = [akLeft, akBottom]
|
||||
Caption = 'No errors found'
|
||||
Font.Color = clGreen
|
||||
@ -174,15 +176,27 @@ object PoCheckerForm: TPoCheckerForm
|
||||
AnchorSideTop.Control = TestListBox
|
||||
AnchorSideTop.Side = asrBottom
|
||||
Left = 201
|
||||
Height = 23
|
||||
Top = 208
|
||||
Width = 97
|
||||
Height = 17
|
||||
Top = 184
|
||||
Width = 61
|
||||
BorderSpacing.Top = 6
|
||||
Caption = 'Select All'
|
||||
Enabled = False
|
||||
OnClick = SelectAllCheckBoxClick
|
||||
TabOrder = 4
|
||||
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
|
||||
Filter = 'po-files (*.po)|*.po|all files|*'
|
||||
Options = [ofFileMustExist, ofEnableSizing, ofViewDetail]
|
||||
|
@ -26,13 +26,14 @@ interface
|
||||
uses
|
||||
Classes, SysUtils, FileUtil, Forms, Controls, Graphics, Dialogs,
|
||||
StdCtrls, LCLProc, CheckLst, Buttons, ExtCtrls, IDEIntf, MenuIntf,
|
||||
SimplePoFiles, PoFamilies, ResultDlg;
|
||||
SimplePoFiles, PoFamilies, ResultDlg, pocheckerconsts;
|
||||
|
||||
type
|
||||
|
||||
{ TPoCheckerForm }
|
||||
|
||||
TPoCheckerForm = class(TForm)
|
||||
FindAllPOsCheckBox: TCheckBox;
|
||||
SelectAllCheckBox: TCheckBox;
|
||||
CurTestHeaderLabel: TLabel;
|
||||
CurPoHeaderLabel: TLabel;
|
||||
@ -67,20 +68,6 @@ type
|
||||
|
||||
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
|
||||
PoCheckerForm: TPoCheckerForm;
|
||||
|
||||
@ -102,9 +89,17 @@ end;
|
||||
|
||||
procedure TPoCheckerForm.FormCreate(Sender: TObject);
|
||||
begin
|
||||
Caption := sGUIPoFileCheckingTool;
|
||||
SelectTestLabel.Caption := sSelectTestTypes;
|
||||
FindAllPOsCheckBox.Caption := sFindAllTranslatedPoFiles;
|
||||
OpenBtn.Caption := sOpenAPoFile;
|
||||
RunBtn.Caption := sRunSelectedTests;
|
||||
NoErrLabel.Caption := sNoErrorsFound;
|
||||
FillTestListBox;
|
||||
ClearAndDisableStatusPanel;
|
||||
NoErrLabel.Visible := False;
|
||||
CurTestHeaderLabel.Caption := sCurrentTest;
|
||||
CurPoHeaderLabel.Caption := sCurrentPoFile;
|
||||
end;
|
||||
|
||||
procedure TPoCheckerForm.FormDestroy(Sender: TObject);
|
||||
@ -168,8 +163,16 @@ procedure TPoCheckerForm.FillTestListBox;
|
||||
var
|
||||
Opt: TPoTestOption;
|
||||
begin
|
||||
for Opt := Low(PoTestOptionNames) to High(PoTestOptionNames) do
|
||||
TestListBox.Items.Add(PoTestOptionNames[Opt]);
|
||||
for Opt := Low(PoTestOptionNames) to Pred(High(PoTestOptionNames)) do
|
||||
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;
|
||||
end;
|
||||
|
||||
@ -179,7 +182,7 @@ var
|
||||
Index: Integer;
|
||||
begin
|
||||
Result := [];
|
||||
for Opt := Low(TpoTestOption) to High(TPoTestOption) do
|
||||
for Opt := Low(TpoTestOption) to Pred(High(TPoTestOption)) do
|
||||
begin
|
||||
Index := Ord(Opt);
|
||||
if (Index < TestListBox.Count) then
|
||||
@ -188,6 +191,8 @@ begin
|
||||
Result := Result + [Opt];
|
||||
end;
|
||||
end;
|
||||
if FindAllPOsCheckBox.Checked then
|
||||
Result := Result + [High(TPoTestOption)];
|
||||
end;
|
||||
|
||||
procedure TPoCheckerForm.ShowError(const Msg: String);
|
||||
|
@ -9,7 +9,7 @@ interface
|
||||
uses
|
||||
Classes, SysUtils, LCLProc, FileUtil, StringHashList,
|
||||
//{$IFDEF UNIX}{$IFNDEF DisableCWString}, cwstring{$ENDIF}{$ENDIF},
|
||||
SimplePoFiles;
|
||||
SimplePoFiles, pocheckerconsts;
|
||||
|
||||
Type
|
||||
|
||||
@ -99,37 +99,18 @@ const
|
||||
|
||||
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';
|
||||
sFormatArgsValues = '%s%s" (= %s)';
|
||||
|
||||
sNrOfItemsMisMatch = 'Mismatch in number of items for master and child';
|
||||
sNrOfItemsMismatchM = '%s: %d items';
|
||||
sNrOfItemsMismatchC = '%s: %d items';
|
||||
|
||||
sMismatchOriginalsID = '%s';
|
||||
sMismatchOriginalsM = '%s: %s';
|
||||
sMismatchOriginalsC = '%s: %s';
|
||||
|
||||
sDuplicateOriginals = 'The (untranslated) value "%s" is used for more than 1 entry:';
|
||||
sDuplicateLineNrWithValue = '[Line %d] %s';
|
||||
sCheckFormatArgs = 'CheckFormatArgs';
|
||||
sCheckNrOfItems = 'CheckNrOfItems';
|
||||
sCheckMissingIdentifiers = 'CheckMissingIdentifiers';
|
||||
sCheckMismatchedOriginals = 'CheckMismatchedOriginals';
|
||||
sCheckDuplicateOriginals = 'CheckDuplicateOriginals';
|
||||
|
||||
//Helper functions
|
||||
|
||||
@ -338,8 +319,8 @@ begin
|
||||
ErrorLog.Add(Divider);
|
||||
ErrorLog.Add('');
|
||||
ErrorLog.Add(sNrOfItemsMismatch);
|
||||
ErrorLog.Add(Format(sNrOfItemsMismatchM,[ShortMasterName,FMaster.Count]));
|
||||
ErrorLog.Add(Format(sNrOfItemsMismatchC,[ShortChildName,FChild.Count]));
|
||||
ErrorLog.Add(Format(sNrOfItemsMismatchD,[ShortMasterName,FMaster.Count]));
|
||||
ErrorLog.Add(Format(sNrOfItemsMismatchD,[ShortChildName,FChild.Count]));
|
||||
ErrorLog.Add(Divider);
|
||||
ErrorLog.Add('');
|
||||
ErrorLog.Add('');
|
||||
|
@ -27,10 +27,10 @@ object ResultDlgForm: TResultDlgForm
|
||||
object CloseBtn: TBitBtn
|
||||
AnchorSideRight.Control = Panel1
|
||||
AnchorSideRight.Side = asrBottom
|
||||
Left = 661
|
||||
Left = 643
|
||||
Height = 26
|
||||
Top = 12
|
||||
Width = 71
|
||||
Width = 89
|
||||
Anchors = [akRight]
|
||||
AutoSize = True
|
||||
BorderSpacing.Right = 10
|
||||
@ -41,10 +41,10 @@ object ResultDlgForm: TResultDlgForm
|
||||
end
|
||||
object SaveBtn: TBitBtn
|
||||
AnchorSideRight.Control = CloseBtn
|
||||
Left = 553
|
||||
Left = 534
|
||||
Height = 26
|
||||
Top = 12
|
||||
Width = 98
|
||||
Width = 99
|
||||
Anchors = [akRight]
|
||||
AutoSize = True
|
||||
BorderSpacing.Around = 10
|
||||
@ -90,10 +90,10 @@ object ResultDlgForm: TResultDlgForm
|
||||
end
|
||||
object CopyBtn: TBitBtn
|
||||
AnchorSideRight.Control = SaveBtn
|
||||
Left = 416
|
||||
Left = 395
|
||||
Height = 26
|
||||
Top = 12
|
||||
Width = 127
|
||||
Width = 129
|
||||
Anchors = [akRight]
|
||||
AutoSize = True
|
||||
BorderSpacing.Around = 10
|
||||
@ -668,6 +668,16 @@ object ResultDlgForm: TResultDlgForm
|
||||
ReadOnly = True
|
||||
ScrollBars = ssAutoBoth
|
||||
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
|
||||
object SynGutterLineNumber1: TSynGutterLineNumber
|
||||
Width = 17
|
||||
|
@ -6,7 +6,8 @@ interface
|
||||
|
||||
uses
|
||||
Classes, SysUtils, FileUtil, Forms, Controls, Graphics, Dialogs,
|
||||
ExtCtrls, Buttons, ClipBrd, LCLType, LCLProc, SynEdit, SynHighlighterPo;
|
||||
ExtCtrls, Buttons, ClipBrd, LCLType, LCLProc, SynEdit, SynHighlighterPo,
|
||||
pocheckerconsts;
|
||||
|
||||
type
|
||||
|
||||
@ -38,16 +39,11 @@ implementation
|
||||
|
||||
{$R *.lfm}
|
||||
|
||||
ResourceString
|
||||
sSaveError = 'Error saving file:' + LineEnding + '%s';
|
||||
sSaveCaption = 'Save to file';
|
||||
sCopyCaption = 'Copy to clipboard';
|
||||
|
||||
|
||||
{ TResultDlgForm }
|
||||
|
||||
procedure TResultDlgForm.FormCreate(Sender: TObject);
|
||||
begin
|
||||
Caption := sResults;
|
||||
LogMemo.Lines.Clear;
|
||||
LogMemo.Align := alClient;
|
||||
FLog := TStringList.Create;
|
||||
|
Loading…
Reference in New Issue
Block a user