mirror of
https://gitlab.com/freepascal.org/lazarus/lazarus.git
synced 2025-08-19 16:40:54 +02:00
PoChecker: add option to check translation statistics.
git-svn-id: trunk@43451 -
This commit is contained in:
parent
5ab9829c76
commit
19e8936d8e
@ -1,4 +1,4 @@
|
|||||||
<?xml version="1.0"?>
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
<CONFIG>
|
<CONFIG>
|
||||||
<ProjectOptions>
|
<ProjectOptions>
|
||||||
<Version Value="9"/>
|
<Version Value="9"/>
|
||||||
@ -61,7 +61,7 @@
|
|||||||
<Unit3>
|
<Unit3>
|
||||||
<Filename Value="..\simplepofiles.pp"/>
|
<Filename Value="..\simplepofiles.pp"/>
|
||||||
<IsPartOfProject Value="True"/>
|
<IsPartOfProject Value="True"/>
|
||||||
<UnitName Value="simplepofiles"/>
|
<UnitName Value="SimplePoFiles"/>
|
||||||
</Unit3>
|
</Unit3>
|
||||||
<Unit4>
|
<Unit4>
|
||||||
<Filename Value="..\pocheckerconsts.pas"/>
|
<Filename Value="..\pocheckerconsts.pas"/>
|
||||||
|
@ -34,6 +34,7 @@ resourcestring
|
|||||||
sOriginal = 'Original';
|
sOriginal = 'Original';
|
||||||
sTranslation = 'Translation';
|
sTranslation = 'Translation';
|
||||||
sErrorsByTest = 'Errors / warnings reported by %s for:';
|
sErrorsByTest = 'Errors / warnings reported by %s for:';
|
||||||
|
sTranslationStatistics = 'Translation statistics for:';
|
||||||
sCheckNumberOfItems = 'Check number of items';
|
sCheckNumberOfItems = 'Check number of items';
|
||||||
sCheckForIncompatibleFormatArguments = 'Check for incompatible format '
|
sCheckForIncompatibleFormatArguments = 'Check for incompatible format '
|
||||||
+'arguments';
|
+'arguments';
|
||||||
@ -42,6 +43,7 @@ resourcestring
|
|||||||
+'untranslated strings';
|
+'untranslated strings';
|
||||||
sCheckForDuplicateUntranslatedValues = 'Check for duplicate untranslated '
|
sCheckForDuplicateUntranslatedValues = 'Check for duplicate untranslated '
|
||||||
+'values';
|
+'values';
|
||||||
|
sCheckStatistics = 'Check percentage of (un)translated and fuzzy strings';
|
||||||
sFindAllTranslatedPoFiles = 'Find all translated po-files';
|
sFindAllTranslatedPoFiles = 'Find all translated po-files';
|
||||||
sIncompatibleFormatArgs = '[Line: %d] Incompatible and/or invalid format() arguments for:' ;
|
sIncompatibleFormatArgs = '[Line: %d] Incompatible and/or invalid format() arguments for:' ;
|
||||||
|
|
||||||
@ -56,7 +58,11 @@ resourcestring
|
|||||||
sNrOfItemsMismatchD = '%s: %d items';
|
sNrOfItemsMismatchD = '%s: %d items';
|
||||||
|
|
||||||
sDuplicateOriginals = 'The (untranslated) value "%s" is used for more than 1 entry:';
|
sDuplicateOriginals = 'The (untranslated) value "%s" is used for more than 1 entry:';
|
||||||
|
|
||||||
sDuplicateLineNrWithValue = '[Line %d] %s';
|
sDuplicateLineNrWithValue = '[Line %d] %s';
|
||||||
|
sPercTranslated = 'Translated strings: %2.0f%%.';
|
||||||
|
sPercUntranslated = 'Untranslated strings: %2.0f%%.';
|
||||||
|
sPercFuzzy = 'Fuzzy strings: %2.0f%%.';
|
||||||
implementation
|
implementation
|
||||||
|
|
||||||
end.
|
end.
|
||||||
|
@ -156,7 +156,7 @@ var
|
|||||||
begin
|
begin
|
||||||
cb := Sender as TCheckBox;
|
cb := Sender as TCheckBox;
|
||||||
// Set / reset "basic" CheckListBox items.
|
// Set / reset "basic" CheckListBox items.
|
||||||
for i := 0 to TestListBox.Count - 2 do
|
for i := 0 to TestListBox.Count - 3 do
|
||||||
TestListBox.Checked[i] := cb.Checked;
|
TestListBox.Checked[i] := cb.Checked;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
@ -187,6 +187,7 @@ begin
|
|||||||
ptoCheckMissingIdentifiers: TestListBox.Items.Add(sCheckMissingIdentifiers);
|
ptoCheckMissingIdentifiers: TestListBox.Items.Add(sCheckMissingIdentifiers);
|
||||||
ptoCheckMismatchedOriginals: TestListBox.Items.Add(sCheckForMismatchesInUntranslatedStrings);
|
ptoCheckMismatchedOriginals: TestListBox.Items.Add(sCheckForMismatchesInUntranslatedStrings);
|
||||||
ptoCheckDuplicateOriginals: TestListBox.Items.Add(sCheckForDuplicateUntranslatedValues);
|
ptoCheckDuplicateOriginals: TestListBox.Items.Add(sCheckForDuplicateUntranslatedValues);
|
||||||
|
ptoCheckStatistics: TestListBox.Items.Add(sCheckStatistics);
|
||||||
else
|
else
|
||||||
TestListBox.Items.Add(PoTestOptionNames[Opt]);
|
TestListBox.Items.Add(PoTestOptionNames[Opt]);
|
||||||
end;
|
end;
|
||||||
|
@ -14,7 +14,7 @@ uses
|
|||||||
Type
|
Type
|
||||||
|
|
||||||
TPoTestOption = (ptoCheckNrOfItems, ptoCheckFormatArgs, ptoCheckMissingIdentifiers,
|
TPoTestOption = (ptoCheckNrOfItems, ptoCheckFormatArgs, ptoCheckMissingIdentifiers,
|
||||||
ptoCheckMismatchedOriginals, ptoCheckDuplicateOriginals,
|
ptoCheckMismatchedOriginals, ptoCheckDuplicateOriginals, ptoCheckStatistics,
|
||||||
ptoFindAllChilds);
|
ptoFindAllChilds);
|
||||||
TPoTestOptions = Set of TPoTestOption;
|
TPoTestOptions = Set of TPoTestOption;
|
||||||
|
|
||||||
@ -28,6 +28,7 @@ const
|
|||||||
'Check missing identifiers',
|
'Check missing identifiers',
|
||||||
'Check for mismatches in untranslated strings',
|
'Check for mismatches in untranslated strings',
|
||||||
'Check for duplicate untranslated values',
|
'Check for duplicate untranslated values',
|
||||||
|
'Check percentage of (un)translated and fuzzy strings',
|
||||||
'Find all translated po-files'
|
'Find all translated po-files'
|
||||||
);
|
);
|
||||||
|
|
||||||
@ -64,6 +65,7 @@ Type
|
|||||||
procedure CheckMissingIdentifiers(out ErrorCount: Integer; ErrorLog: TStrings);
|
procedure CheckMissingIdentifiers(out ErrorCount: Integer; ErrorLog: TStrings);
|
||||||
procedure CheckMismatchedOriginals(out ErrorCount: Integer; ErrorLog: TStrings);
|
procedure CheckMismatchedOriginals(out ErrorCount: Integer; ErrorLog: TStrings);
|
||||||
procedure CheckDuplicateOriginals(out WarningCount: Integer; ErrorLog: TStrings);
|
procedure CheckDuplicateOriginals(out WarningCount: Integer; ErrorLog: TStrings);
|
||||||
|
procedure CheckStatistics(out WarningCount: Integer; ErrorLog: TStrings);
|
||||||
|
|
||||||
public
|
public
|
||||||
procedure RunTests(const Options: TPoTestOptions; out ErrorCount, WarningCount: Integer; ErrorLog: TStrings);
|
procedure RunTests(const Options: TPoTestOptions; out ErrorCount, WarningCount: Integer; ErrorLog: TStrings);
|
||||||
@ -563,6 +565,56 @@ begin
|
|||||||
//debugln('TPoFamily.CheckDuplicateOriginals: ',Dbgs(WarningCount),' Errors');
|
//debugln('TPoFamily.CheckDuplicateOriginals: ',Dbgs(WarningCount),' Errors');
|
||||||
end;
|
end;
|
||||||
|
|
||||||
|
procedure TPoFamily.CheckStatistics(out WarningCount: Integer; ErrorLog: TStrings);
|
||||||
|
var
|
||||||
|
i: Integer;
|
||||||
|
CPoItem: TPOFileItem;
|
||||||
|
NrTranslated, NrUntranslated, NrFuzzy, NrTotal: Integer;
|
||||||
|
begin
|
||||||
|
//debugln('TPoFamily.CheckFormatArgs');
|
||||||
|
DoTestStart(sCheckStatistics, ShortChildName);
|
||||||
|
NrTranslated := 0;
|
||||||
|
NrUntranslated := 0;
|
||||||
|
NrFuzzy := 0;
|
||||||
|
//for i := 0 to FMaster.Count - 1 do
|
||||||
|
for i := 0 to FChild.Count - 1 do
|
||||||
|
begin
|
||||||
|
//debugln(' i = ',DbgS(i));
|
||||||
|
//MPoItem := FMaster.PoItems[i];
|
||||||
|
CPoItem := FChild.PoItems[i];
|
||||||
|
//CPoItem := FChild.FindPoItem(MPoItem.Identifier);
|
||||||
|
if Assigned(CPoItem) then
|
||||||
|
begin
|
||||||
|
if (Length(CPoItem.Translation) > 0) then
|
||||||
|
begin
|
||||||
|
if (Pos('fuzzy', CPoItem.Flags) <> 0) then
|
||||||
|
Inc(NrFuzzy)
|
||||||
|
else
|
||||||
|
Inc(NrTranslated);
|
||||||
|
end
|
||||||
|
else
|
||||||
|
begin
|
||||||
|
Inc(NrUntranslated)
|
||||||
|
end;
|
||||||
|
end;
|
||||||
|
end;
|
||||||
|
NrTotal := NrTranslated + NrUntranslated + NrFuzzy;
|
||||||
|
if (NrTotal > 0) then
|
||||||
|
begin
|
||||||
|
WarningCount := 1; //else it will not show up...
|
||||||
|
ErrorLog.Add(Divider);
|
||||||
|
ErrorLog.Add(sTranslationStatistics);
|
||||||
|
ErrorLog.Add(ShortChildName);
|
||||||
|
ErrorLog.Add(Format(sPercTranslated,[100.0*(NrTranslated/NrTotal)]));
|
||||||
|
ErrorLog.Add(Format(sPercUntranslated,[100.0*(NrUntranslated/NrTotal)]));
|
||||||
|
ErrorLog.Add(Format(sPercFuzzy,[100.0*(NrFuzzy/NrTotal)]));
|
||||||
|
ErrorLog.Add('');
|
||||||
|
ErrorLog.Add('');
|
||||||
|
end;
|
||||||
|
DoTestEnd(PoTestOptionNames[ptoCheckFormatArgs], WarningCount);
|
||||||
|
//debugln('TPoFamily.CheckIncompatibleFormatArgs: ',Dbgs(ErrorCount),' Errors');
|
||||||
|
end;
|
||||||
|
|
||||||
{
|
{
|
||||||
procedure TPoFamily.RunTests(const Options: TPoTestOptions; out
|
procedure TPoFamily.RunTests(const Options: TPoTestOptions; out
|
||||||
Pre conditions:
|
Pre conditions:
|
||||||
@ -691,6 +743,11 @@ begin
|
|||||||
ErrorCount := CurrErrCnt + ErrorCount;
|
ErrorCount := CurrErrCnt + ErrorCount;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
|
if (ptoCheckStatistics in Options) then
|
||||||
|
begin
|
||||||
|
CheckStatistics(CurrErrCnt, ErrorLog);
|
||||||
|
ErrorCount := CurrErrCnt + ErrorCount;
|
||||||
|
end;
|
||||||
{
|
{
|
||||||
if (pto in Options) then
|
if (pto in Options) then
|
||||||
begin
|
begin
|
||||||
|
Loading…
Reference in New Issue
Block a user