From 01f1750902f86f19868189ccedd0e6ebe7000f3a Mon Sep 17 00:00:00 2001
From: bart <9132501-flyingsheep@users.noreply.gitlab.com>
Date: Thu, 21 Aug 2014 18:27:29 +0000
Subject: [PATCH] PoChecker: - implement option to ignore translated strings
that are marked as "fuzzy". - separate TestTypes from TestOptions. - fix a
resource string. - regenerated po-files.
git-svn-id: trunk@46056 -
---
components/pochecker/Proj/pochecker.lpi | 2 -
.../pochecker/languages/pocheckerconsts.cs.po | 12 ++-
.../pochecker/languages/pocheckerconsts.de.po | 12 ++-
.../pochecker/languages/pocheckerconsts.es.po | 12 ++-
.../pochecker/languages/pocheckerconsts.hu.po | 12 ++-
.../pochecker/languages/pocheckerconsts.it.po | 12 ++-
.../pochecker/languages/pocheckerconsts.ja.po | 12 ++-
.../pochecker/languages/pocheckerconsts.lt.po | 12 ++-
.../pochecker/languages/pocheckerconsts.po | 10 ++-
.../languages/pocheckerconsts.pt_BR.po | 12 ++-
.../pochecker/languages/pocheckerconsts.ru.po | 12 ++-
.../pochecker/languages/pocheckerconsts.uk.po | 12 ++-
components/pochecker/pocheckerconsts.pas | 5 +-
components/pochecker/pocheckermain.lfm | 65 +++++++-------
components/pochecker/pocheckermain.pp | 58 ++++++++-----
components/pochecker/pofamilies.pp | 86 ++++++++++---------
16 files changed, 239 insertions(+), 107 deletions(-)
diff --git a/components/pochecker/Proj/pochecker.lpi b/components/pochecker/Proj/pochecker.lpi
index fe2bc23c12..884ee6f588 100644
--- a/components/pochecker/Proj/pochecker.lpi
+++ b/components/pochecker/Proj/pochecker.lpi
@@ -43,7 +43,6 @@
-
@@ -56,7 +55,6 @@
-
diff --git a/components/pochecker/languages/pocheckerconsts.cs.po b/components/pochecker/languages/pocheckerconsts.cs.po
index 28a3ddd932..678b79148b 100644
--- a/components/pochecker/languages/pocheckerconsts.cs.po
+++ b/components/pochecker/languages/pocheckerconsts.cs.po
@@ -107,6 +107,10 @@ msgstr "GUI pomůcka pro kontrolu po souborů"
msgid "Identifier [%s] not found in %s"
msgstr "Identifikátor [%s] nenalezen v %s"
+#: pocheckerconsts.signorefuzzytranslations
+msgid "Ignore translated strings marked as \"fuzzy\""
+msgstr ""
+
#: pocheckerconsts.sincompatibleformatargs
#| msgid "[Line: %d] Incompatible format() arguments for:"
msgid "[Line: %d] Incompatible and/or invalid format() arguments for:"
@@ -142,6 +146,10 @@ msgstr ""
msgid "There are no tests selected."
msgstr "Nejsou vybrány žádné testy."
+#: pocheckerconsts.snotetranslationisfuzzy
+msgid "Note: translation is fuzzy"
+msgstr ""
+
#: pocheckerconsts.snrerrorsfound
msgid "Found %d errors."
msgstr "Nalezeno %d chyb."
@@ -213,7 +221,9 @@ msgid "Select test types"
msgstr "Vybrat typy testu"
#: pocheckerconsts.stotalerrors
-msgid "Total errors / warnings found: %d"
+#, fuzzy
+#| msgid "Total errors / warnings found: %d"
+msgid "Total errors found: %d"
msgstr "Nalezeno celkem %d chyb / varování."
#: pocheckerconsts.stotalwarnings
diff --git a/components/pochecker/languages/pocheckerconsts.de.po b/components/pochecker/languages/pocheckerconsts.de.po
index f6575b8112..6cbf29bdf2 100644
--- a/components/pochecker/languages/pocheckerconsts.de.po
+++ b/components/pochecker/languages/pocheckerconsts.de.po
@@ -104,6 +104,10 @@ msgstr "po-Datei-Überprüfungswerkzeug"
msgid "Identifier [%s] not found in %s"
msgstr "Bezeichner [%s] nicht gefunden in %s"
+#: pocheckerconsts.signorefuzzytranslations
+msgid "Ignore translated strings marked as \"fuzzy\""
+msgstr ""
+
#: pocheckerconsts.sincompatibleformatargs
msgid "[Line: %d] Incompatible and/or invalid format() arguments for:"
msgstr "[Zeile: %d] Inkompatible und/oder ungültige Format()-Argumente für:"
@@ -139,6 +143,10 @@ msgstr ""
msgid "There are no tests selected."
msgstr "Es wurden keine Tests ausgewählt."
+#: pocheckerconsts.snotetranslationisfuzzy
+msgid "Note: translation is fuzzy"
+msgstr ""
+
#: pocheckerconsts.snrerrorsfound
msgid "Found %d errors."
msgstr "%d Fehler gefunden."
@@ -209,7 +217,9 @@ msgid "Select test types"
msgstr "Test-Typen"
#: pocheckerconsts.stotalerrors
-msgid "Total errors / warnings found: %d"
+#, fuzzy
+#| msgid "Total errors / warnings found: %d"
+msgid "Total errors found: %d"
msgstr "Insgesamt %d Fehler / Warnungen gefunden"
#: pocheckerconsts.stotalwarnings
diff --git a/components/pochecker/languages/pocheckerconsts.es.po b/components/pochecker/languages/pocheckerconsts.es.po
index c7f2159152..95654d4dd6 100644
--- a/components/pochecker/languages/pocheckerconsts.es.po
+++ b/components/pochecker/languages/pocheckerconsts.es.po
@@ -103,6 +103,10 @@ msgstr "GUI de herramienta de comprobación de archivos PO"
msgid "Identifier [%s] not found in %s"
msgstr "Identificador [%s] no se encuentra en %s"
+#: pocheckerconsts.signorefuzzytranslations
+msgid "Ignore translated strings marked as \"fuzzy\""
+msgstr ""
+
#: pocheckerconsts.sincompatibleformatargs
#, fuzzy
#| msgid "[Line: %d] Incompatible format() arguments for:"
@@ -139,6 +143,10 @@ msgstr ""
msgid "There are no tests selected."
msgstr "No existen pruebas seleccionadas."
+#: pocheckerconsts.snotetranslationisfuzzy
+msgid "Note: translation is fuzzy"
+msgstr ""
+
#: pocheckerconsts.snrerrorsfound
msgid "Found %d errors."
msgstr "Encontrados %d errores."
@@ -210,7 +218,9 @@ msgid "Select test types"
msgstr "Seleccione los tipos de prueba"
#: pocheckerconsts.stotalerrors
-msgid "Total errors / warnings found: %d"
+#, fuzzy
+#| msgid "Total errors / warnings found: %d"
+msgid "Total errors found: %d"
msgstr "Total de errores / advertencias encontraron: %d"
#: pocheckerconsts.stotalwarnings
diff --git a/components/pochecker/languages/pocheckerconsts.hu.po b/components/pochecker/languages/pocheckerconsts.hu.po
index 6bccf59de3..17cd2750cf 100644
--- a/components/pochecker/languages/pocheckerconsts.hu.po
+++ b/components/pochecker/languages/pocheckerconsts.hu.po
@@ -105,6 +105,10 @@ msgstr "GUI Po-fájl ellenőrző eszköz"
msgid "Identifier [%s] not found in %s"
msgstr "A(z) %s azonosító nem található ebben: %s"
+#: pocheckerconsts.signorefuzzytranslations
+msgid "Ignore translated strings marked as \"fuzzy\""
+msgstr ""
+
#: pocheckerconsts.sincompatibleformatargs
msgid "[Line: %d] Incompatible and/or invalid format() arguments for:"
msgstr "[Sor: %d] Nem megfelelő és/vagy érvénytelen format() paraméterek a következőben:"
@@ -139,6 +143,10 @@ msgstr ""
msgid "There are no tests selected."
msgstr "Egy teszt sincs teszt kiválasztva."
+#: pocheckerconsts.snotetranslationisfuzzy
+msgid "Note: translation is fuzzy"
+msgstr ""
+
#: pocheckerconsts.snrerrorsfound
msgid "Found %d errors."
msgstr "%d hiba."
@@ -209,7 +217,9 @@ msgid "Select test types"
msgstr "Teszt típusok kiválasztása"
#: pocheckerconsts.stotalerrors
-msgid "Total errors / warnings found: %d"
+#, fuzzy
+#| msgid "Total errors / warnings found: %d"
+msgid "Total errors found: %d"
msgstr "Összes hiba / figyelmeztetés: %d"
#: pocheckerconsts.stotalwarnings
diff --git a/components/pochecker/languages/pocheckerconsts.it.po b/components/pochecker/languages/pocheckerconsts.it.po
index 1622cb940d..d36aeeb90c 100644
--- a/components/pochecker/languages/pocheckerconsts.it.po
+++ b/components/pochecker/languages/pocheckerconsts.it.po
@@ -103,6 +103,10 @@ msgstr "Strumento GUI di verifica di file po"
msgid "Identifier [%s] not found in %s"
msgstr "Identificatore [%s] non trovato in %s"
+#: pocheckerconsts.signorefuzzytranslations
+msgid "Ignore translated strings marked as \"fuzzy\""
+msgstr ""
+
#: pocheckerconsts.sincompatibleformatargs
msgid "[Line: %d] Incompatible and/or invalid format() arguments for:"
msgstr "[Riga: %d] Argomenti di format()Incompatibili e/o non validi per:"
@@ -137,6 +141,10 @@ msgstr ""
msgid "There are no tests selected."
msgstr "Nessuna verifica selezionata"
+#: pocheckerconsts.snotetranslationisfuzzy
+msgid "Note: translation is fuzzy"
+msgstr ""
+
#: pocheckerconsts.snrerrorsfound
msgid "Found %d errors."
msgstr "Riscontrati %d errori."
@@ -206,7 +214,9 @@ msgid "Select test types"
msgstr "Seleziona i tipi di verifica"
#: pocheckerconsts.stotalerrors
-msgid "Total errors / warnings found: %d"
+#, fuzzy
+#| msgid "Total errors / warnings found: %d"
+msgid "Total errors found: %d"
msgstr "Totale errori / avvertimenti: %d"
#: pocheckerconsts.stotalwarnings
diff --git a/components/pochecker/languages/pocheckerconsts.ja.po b/components/pochecker/languages/pocheckerconsts.ja.po
index 6388a80988..9cf79a00f6 100644
--- a/components/pochecker/languages/pocheckerconsts.ja.po
+++ b/components/pochecker/languages/pocheckerconsts.ja.po
@@ -105,6 +105,10 @@ msgstr "GUI po ファイル検査ツール"
msgid "Identifier [%s] not found in %s"
msgstr "識別子 [%s] が %s 内にありません"
+#: pocheckerconsts.signorefuzzytranslations
+msgid "Ignore translated strings marked as \"fuzzy\""
+msgstr ""
+
#: pocheckerconsts.sincompatibleformatargs
msgid "[Line: %d] Incompatible and/or invalid format() arguments for:"
msgstr "[行:%d] 互換性のないもしくは無効な format() の引数:"
@@ -139,6 +143,10 @@ msgstr ""
msgid "There are no tests selected."
msgstr "テスト項目が選択されていません。"
+#: pocheckerconsts.snotetranslationisfuzzy
+msgid "Note: translation is fuzzy"
+msgstr ""
+
#: pocheckerconsts.snrerrorsfound
msgid "Found %d errors."
msgstr "%d 個のエラーが見つかりました。"
@@ -210,7 +218,9 @@ msgid "Select test types"
msgstr "テスト項目を選択してください"
#: pocheckerconsts.stotalerrors
-msgid "Total errors / warnings found: %d"
+#, fuzzy
+#| msgid "Total errors / warnings found: %d"
+msgid "Total errors found: %d"
msgstr "エラー/警告の総数:%d"
#: pocheckerconsts.stotalwarnings
diff --git a/components/pochecker/languages/pocheckerconsts.lt.po b/components/pochecker/languages/pocheckerconsts.lt.po
index acbd436fe3..5945f00d8d 100644
--- a/components/pochecker/languages/pocheckerconsts.lt.po
+++ b/components/pochecker/languages/pocheckerconsts.lt.po
@@ -105,6 +105,10 @@ msgstr "Įrankio PO failų tikrinimui grafinė sąsaja"
msgid "Identifier [%s] not found in %s"
msgstr "Ieškota identifikatoriaus [%s], tačiau %s jo neturi"
+#: pocheckerconsts.signorefuzzytranslations
+msgid "Ignore translated strings marked as \"fuzzy\""
+msgstr ""
+
#: pocheckerconsts.sincompatibleformatargs
#, fuzzy
#| msgid "[Line: %d] Incompatible format() arguments for:"
@@ -141,6 +145,10 @@ msgstr ""
msgid "There are no tests selected."
msgstr "Būtina parinkti bent vieną testavimą."
+#: pocheckerconsts.snotetranslationisfuzzy
+msgid "Note: translation is fuzzy"
+msgstr ""
+
#: pocheckerconsts.snrerrorsfound
msgid "Found %d errors."
msgstr "Rasta klaidų: %d."
@@ -210,7 +218,9 @@ msgid "Select test types"
msgstr "Pažymėti testavimo tipus"
#: pocheckerconsts.stotalerrors
-msgid "Total errors / warnings found: %d"
+#, fuzzy
+#| msgid "Total errors / warnings found: %d"
+msgid "Total errors found: %d"
msgstr "Viso rasta klaidų/perspėjimų: %d"
#: pocheckerconsts.stotalwarnings
diff --git a/components/pochecker/languages/pocheckerconsts.po b/components/pochecker/languages/pocheckerconsts.po
index 5bb54ed843..778f1e10f1 100644
--- a/components/pochecker/languages/pocheckerconsts.po
+++ b/components/pochecker/languages/pocheckerconsts.po
@@ -86,6 +86,10 @@ msgstr ""
msgid "Identifier [%s] not found in %s"
msgstr ""
+#: pocheckerconsts.signorefuzzytranslations
+msgid "Ignore translated strings marked as \"fuzzy\""
+msgstr ""
+
#: pocheckerconsts.sincompatibleformatargs
msgid "[Line: %d] Incompatible and/or invalid format() arguments for:"
msgstr ""
@@ -117,6 +121,10 @@ msgstr ""
msgid "There are no tests selected."
msgstr ""
+#: pocheckerconsts.snotetranslationisfuzzy
+msgid "Note: translation is fuzzy"
+msgstr ""
+
#: pocheckerconsts.snrerrorsfound
msgid "Found %d errors."
msgstr ""
@@ -184,7 +192,7 @@ msgid "Select test types"
msgstr ""
#: pocheckerconsts.stotalerrors
-msgid "Total errors / warnings found: %d"
+msgid "Total errors found: %d"
msgstr ""
#: pocheckerconsts.stotalwarnings
diff --git a/components/pochecker/languages/pocheckerconsts.pt_BR.po b/components/pochecker/languages/pocheckerconsts.pt_BR.po
index 9d51f6f0d4..530e905957 100644
--- a/components/pochecker/languages/pocheckerconsts.pt_BR.po
+++ b/components/pochecker/languages/pocheckerconsts.pt_BR.po
@@ -104,6 +104,10 @@ msgstr "Ferramenta GUI de verificação de arquivos PO"
msgid "Identifier [%s] not found in %s"
msgstr "Identificador [%s] não encontrado em %s"
+#: pocheckerconsts.signorefuzzytranslations
+msgid "Ignore translated strings marked as \"fuzzy\""
+msgstr ""
+
#: pocheckerconsts.sincompatibleformatargs
#| msgid "[Line: %d] Incompatible format() arguments for:"
msgid "[Line: %d] Incompatible and/or invalid format() arguments for:"
@@ -139,6 +143,10 @@ msgstr ""
msgid "There are no tests selected."
msgstr "Nenhum teste selecionado."
+#: pocheckerconsts.snotetranslationisfuzzy
+msgid "Note: translation is fuzzy"
+msgstr ""
+
#: pocheckerconsts.snrerrorsfound
msgid "Found %d errors."
msgstr "Encontrados %d erros."
@@ -210,7 +218,9 @@ msgid "Select test types"
msgstr "Selecionar tipos de teste"
#: pocheckerconsts.stotalerrors
-msgid "Total errors / warnings found: %d"
+#, fuzzy
+#| msgid "Total errors / warnings found: %d"
+msgid "Total errors found: %d"
msgstr "Total de erros / avisos encontrados: %d"
#: pocheckerconsts.stotalwarnings
diff --git a/components/pochecker/languages/pocheckerconsts.ru.po b/components/pochecker/languages/pocheckerconsts.ru.po
index 76c26b83d1..06bd600961 100644
--- a/components/pochecker/languages/pocheckerconsts.ru.po
+++ b/components/pochecker/languages/pocheckerconsts.ru.po
@@ -103,6 +103,10 @@ msgstr "Средство проверки файлов PO"
msgid "Identifier [%s] not found in %s"
msgstr "Идентификатор [%s] не найден в %s"
+#: pocheckerconsts.signorefuzzytranslations
+msgid "Ignore translated strings marked as \"fuzzy\""
+msgstr ""
+
#: pocheckerconsts.sincompatibleformatargs
#| msgid "[Line: %d] Incompatible format() arguments for:"
msgid "[Line: %d] Incompatible and/or invalid format() arguments for:"
@@ -138,6 +142,10 @@ msgstr ""
msgid "There are no tests selected."
msgstr "Не выбрано ни одного теста."
+#: pocheckerconsts.snotetranslationisfuzzy
+msgid "Note: translation is fuzzy"
+msgstr ""
+
#: pocheckerconsts.snrerrorsfound
msgid "Found %d errors."
msgstr "Найдено ошибок: %d"
@@ -209,7 +217,9 @@ msgid "Select test types"
msgstr "Выбор тестов"
#: pocheckerconsts.stotalerrors
-msgid "Total errors / warnings found: %d"
+#, fuzzy
+#| msgid "Total errors / warnings found: %d"
+msgid "Total errors found: %d"
msgstr "Всего найдено ошибок и предупреждений: %d"
#: pocheckerconsts.stotalwarnings
diff --git a/components/pochecker/languages/pocheckerconsts.uk.po b/components/pochecker/languages/pocheckerconsts.uk.po
index 475b206df4..674710c8c7 100644
--- a/components/pochecker/languages/pocheckerconsts.uk.po
+++ b/components/pochecker/languages/pocheckerconsts.uk.po
@@ -102,6 +102,10 @@ msgstr "GUI інструмент перевірки po-файлів"
msgid "Identifier [%s] not found in %s"
msgstr "Ідентифікатор [%s] не знайдений в %s"
+#: pocheckerconsts.signorefuzzytranslations
+msgid "Ignore translated strings marked as \"fuzzy\""
+msgstr ""
+
#: pocheckerconsts.sincompatibleformatargs
#, fuzzy
#| msgid "[Line: %d] Incompatible format() arguments for:"
@@ -138,6 +142,10 @@ msgstr ""
msgid "There are no tests selected."
msgstr "Не вибрано жодного тесту."
+#: pocheckerconsts.snotetranslationisfuzzy
+msgid "Note: translation is fuzzy"
+msgstr ""
+
#: pocheckerconsts.snrerrorsfound
msgid "Found %d errors."
msgstr "Знайдено %d помилок."
@@ -207,7 +215,9 @@ msgid "Select test types"
msgstr "Вибрати типи тестів"
#: pocheckerconsts.stotalerrors
-msgid "Total errors / warnings found: %d"
+#, fuzzy
+#| msgid "Total errors / warnings found: %d"
+msgid "Total errors found: %d"
msgstr "Знайдено всього помилок / попереджень: %d"
#: pocheckerconsts.stotalwarnings
diff --git a/components/pochecker/pocheckerconsts.pas b/components/pochecker/pocheckerconsts.pas
index 86b8505252..51bf6a0206 100644
--- a/components/pochecker/pocheckerconsts.pas
+++ b/components/pochecker/pocheckerconsts.pas
@@ -19,7 +19,7 @@ resourcestring
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';
+ sTotalErrors = 'Total errors found: %d';
sTotalWarnings = 'Total warnings found: %d';
sNoErrorsFound = 'No errors found';
sCurrentTest = 'Current Test:';
@@ -47,6 +47,7 @@ resourcestring
+'values';
sCheckStatistics = 'Check percentage of (un)translated and fuzzy strings';
sFindAllTranslatedPoFiles = 'Find all translated po-files';
+ sIgnoreFuzzyTranslations = 'Ignore translated strings marked as "fuzzy"';
sIncompatibleFormatArgs = '[Line: %d] Incompatible and/or invalid format() arguments for:' ;
sNrErrorsFound = 'Found %d errors.';
@@ -55,6 +56,8 @@ resourcestring
sIdentifierNotFoundIn = 'Identifier [%s] not found in %s';
sMissingMasterIdentifier = 'Identifier [%s] found in %s, but it does not exist in %s';
sLineNr = '[Line: %d]';
+ sNoteTranslationIsFuzzy = 'Note: translation is fuzzy';
+
sNrOfItemsMisMatch = 'Mismatch in number of items for master and child';
sNrOfItemsMismatchD = '%s: %d items';
diff --git a/components/pochecker/pocheckermain.lfm b/components/pochecker/pocheckermain.lfm
index d95e9708fc..833429ca62 100644
--- a/components/pochecker/pocheckermain.lfm
+++ b/components/pochecker/pocheckermain.lfm
@@ -1,10 +1,10 @@
object PoCheckerForm: TPoCheckerForm
Left = 318
- Height = 311
+ Height = 342
Top = 163
Width = 581
Caption = 'GUI Po-file checking tool'
- ClientHeight = 311
+ ClientHeight = 342
ClientWidth = 581
OnCreate = FormCreate
OnDestroy = FormDestroy
@@ -15,23 +15,22 @@ object PoCheckerForm: TPoCheckerForm
AnchorSideTop.Control = SelectTestLabel
AnchorSideTop.Side = asrBottom
Left = 201
- Height = 152
- Top = 26
+ Height = 154
+ Top = 29
Width = 373
Anchors = [akTop, akLeft, akRight, akBottom]
BorderSpacing.Top = 6
Enabled = False
ItemHeight = 0
TabOrder = 0
- TopIndex = -1
end
object SelectTestLabel: TLabel
AnchorSideLeft.Control = OpenBtn
AnchorSideLeft.Side = asrBottom
Left = 201
- Height = 12
+ Height = 15
Top = 8
- Width = 84
+ Width = 93
BorderSpacing.Left = 9
Caption = 'Select test types'
Font.Style = [fsBold]
@@ -106,7 +105,7 @@ object PoCheckerForm: TPoCheckerForm
object StatusPanel: TPanel
Left = 0
Height = 49
- Top = 262
+ Top = 293
Width = 581
Align = alBottom
BevelOuter = bvLowered
@@ -115,9 +114,9 @@ object PoCheckerForm: TPoCheckerForm
TabOrder = 3
object CurTestHeaderLabel: TLabel
Left = 8
- Height = 12
+ Height = 15
Top = 8
- Width = 61
+ Width = 68
Caption = 'Current Test:'
ParentColor = False
end
@@ -126,9 +125,9 @@ object PoCheckerForm: TPoCheckerForm
AnchorSideTop.Control = CurTestHeaderLabel
AnchorSideTop.Side = asrBottom
Left = 8
- Height = 12
- Top = 20
- Width = 72
+ Height = 15
+ Top = 23
+ Width = 81
Caption = 'Current po-file:'
ParentColor = False
end
@@ -137,10 +136,10 @@ object PoCheckerForm: TPoCheckerForm
AnchorSideLeft.Side = asrBottom
AnchorSideTop.Control = CurTestHeaderLabel
AnchorSideTop.Side = asrCenter
- Left = 75
- Height = 12
+ Left = 82
+ Height = 15
Top = 8
- Width = 61
+ Width = 69
BorderSpacing.Around = 6
Caption = 'CurTestLabel'
ParentColor = False
@@ -150,10 +149,10 @@ object PoCheckerForm: TPoCheckerForm
AnchorSideLeft.Side = asrBottom
AnchorSideTop.Control = CurPoHeaderLabel
AnchorSideTop.Side = asrCenter
- Left = 86
- Height = 12
- Top = 20
- Width = 53
+ Left = 95
+ Height = 15
+ Top = 23
+ Width = 61
BorderSpacing.Around = 6
Caption = 'CurPoLabel'
ParentColor = False
@@ -161,9 +160,9 @@ object PoCheckerForm: TPoCheckerForm
end
object NoErrLabel: TLabel
Left = 8
- Height = 22
- Top = 234
- Width = 145
+ Height = 25
+ Top = 262
+ Width = 146
Anchors = [akLeft, akBottom]
Caption = 'No errors found'
Font.Color = clGreen
@@ -177,9 +176,9 @@ object PoCheckerForm: TPoCheckerForm
AnchorSideTop.Control = SelectBasicBtn
AnchorSideTop.Side = asrBottom
Left = 201
- Height = 24
- Top = 215
- Width = 149
+ Height = 19
+ Top = 220
+ Width = 156
BorderSpacing.Top = 6
Caption = 'Find all translated PO files'
TabOrder = 4
@@ -190,7 +189,7 @@ object PoCheckerForm: TPoCheckerForm
AnchorSideTop.Side = asrBottom
Left = 201
Height = 25
- Top = 184
+ Top = 189
Width = 115
BorderSpacing.Top = 6
Caption = 'Select Basic Tests'
@@ -204,7 +203,7 @@ object PoCheckerForm: TPoCheckerForm
AnchorSideTop.Control = SelectBasicBtn
Left = 320
Height = 25
- Top = 184
+ Top = 189
Width = 115
BorderSpacing.Left = 4
Caption = 'Select All Tests'
@@ -218,7 +217,7 @@ object PoCheckerForm: TPoCheckerForm
AnchorSideTop.Control = SelectAllBtn
Left = 439
Height = 25
- Top = 184
+ Top = 189
Width = 115
BorderSpacing.Left = 4
Caption = 'Unselect All Tests'
@@ -226,6 +225,14 @@ object PoCheckerForm: TPoCheckerForm
OnClick = UnselectAllBtnClick
TabOrder = 7
end
+ object IgnoreFuzzyCheckBox: TCheckBox
+ Left = 201
+ Height = 19
+ Top = 240
+ Width = 152
+ Caption = 'sIgnoreFuzzyTranslations'
+ TabOrder = 8
+ end
object OpenDialog: TOpenDialog
Filter = 'po-files (*.po)|*.po|all files|*'
Options = [ofFileMustExist, ofEnableSizing, ofViewDetail]
diff --git a/components/pochecker/pocheckermain.pp b/components/pochecker/pocheckermain.pp
index 165a9d5c45..9ae3e31a7a 100644
--- a/components/pochecker/pocheckermain.pp
+++ b/components/pochecker/pocheckermain.pp
@@ -38,6 +38,7 @@ type
{ TPoCheckerForm }
TPoCheckerForm = class(TForm)
+ IgnoreFuzzyCheckBox: TCheckBox;
UnselectAllBtn: TButton;
SelectAllBtn: TButton;
SelectBasicBtn: TButton;
@@ -68,7 +69,8 @@ type
procedure OnTestStart(const ATestName, APoFileName: string);
procedure OnTestEnd(const ATestName: string; const ErrorCount: integer);
procedure FillTestListBox;
- function GetOptionsFromListBox: TPoTestOptions;
+ function GetTestTypesFromListBox: TPoTestTypes;
+ function GetTestOptions: TPoTestOptions;
procedure ShowError(const Msg: string);
function TrySelectFile: boolean;
procedure RunSelectedTests;
@@ -122,6 +124,7 @@ begin
Caption := sGUIPoFileCheckingTool;
SelectTestLabel.Caption := sSelectTestTypes;
FindAllPOsCheckBox.Caption := sFindAllTranslatedPoFiles;
+ IgnoreFuzzyCheckBox.Caption := sIgnoreFuzzyTranslations;
OpenBtn.Caption := sOpenAPoFile;
RunBtn.Caption := sRunSelectedTests;
NoErrLabel.Caption := sNoErrorsFound;
@@ -211,45 +214,52 @@ end;
procedure TPoCheckerForm.FillTestListBox;
var
- Opt: TPoTestOption;
+ Typ: TPoTestType;
begin
- for Opt := Low(PoTestOptionNames) to Pred(High(PoTestOptionNames)) do
- case Opt of
- ptoCheckNrOfItems:
+ for Typ := Low(PoTestTypeNames) to High(PoTestTypeNames) do
+ case Typ of
+ pttCheckNrOfItems:
TestListBox.Items.Add(sCheckNumberOfItems);
- ptoCheckFormatArgs:
+ pttCheckFormatArgs:
TestListBox.Items.Add(sCheckForIncompatibleFormatArguments);
- ptoCheckMissingIdentifiers:
+ pttCheckMissingIdentifiers:
TestListBox.Items.Add(sCheckMissingIdentifiers);
- ptoCheckMismatchedOriginals:
+ pttCheckMismatchedOriginals:
TestListBox.Items.Add(sCheckForMismatchesInUntranslatedStrings);
- ptoCheckDuplicateOriginals:
+ pttCheckDuplicateOriginals:
TestListBox.Items.Add(sCheckForDuplicateUntranslatedValues);
- ptoCheckStatistics:
+ pttCheckStatistics:
TestListBox.Items.Add(sCheckStatistics);
else
- TestListBox.Items.Add(PoTestOptionNames[Opt]);
+ TestListBox.Items.Add(PoTestTypeNames[Typ]);
end;
end;
-function TPoCheckerForm.GetOptionsFromListBox: TPoTestOptions;
+function TPoCheckerForm.GetTestTypesFromListBox: TPoTestTypes;
var
- Opt: TPoTestOption;
+ Typ: TPoTestType;
Index: integer;
begin
Result := [];
- for Opt := Low(TpoTestOption) to Pred(High(TPoTestOption)) do
+ for Typ := Low(TPoTestType) to High(TPoTestType) do
begin
- Index := Ord(Opt);
+ Index := Ord(Typ);
if (Index < TestListBox.Count) then
begin
if TestListBox.Checked[Index] then
- Result := Result + [Opt];
+ Result := Result + [Typ];
end;
end;
+end;
+
+function TPoCheckerForm.GetTestOptions: TPoTestOptions;
+begin
+ Result := [];
if FindAllPOsCheckBox.Checked then
- Result := Result + [High(TPoTestOption)];
+ Result := Result + [ptoFindAllChildren];
+ if IgnoreFuzzyCheckBox.Checked then
+ Result := Result + [ptoIgnoreFuzzyStrings];
end;
@@ -330,30 +340,32 @@ end;
procedure TPoCheckerForm.RunSelectedTests;
var
- Options: TPoTestOptions;
+ TestTypes: TPoTestTypes;
+ TestOptions: TPoTestOptions;
ErrorCount, WarningCount: integer;
SL: TStrings;
ResultDlg: TResultDlgForm;
begin
- Options := GetOptionsFromListBox;
- if (Options = []) then
+ TestTypes := GetTestTypesFromListBox;
+ if (TestTypes = []) then
begin
ShowError(sNoTestSelected);
Exit;
end;
+ TestOptions := GetTestOptions;
NoErrLabel.Visible := False;
Application.ProcessMessages;
SL := TStringList.Create;
try
StatusPanel.Enabled := True;
- if (not (ptoFindAllChildren in Options)) and Assigned(PoFamily.Child) and
+ if (not (ptoFindAllChildren in TestOptions)) and Assigned(PoFamily.Child) and
(PoFamily.ChildName <> FChosenChildName) then
PoFamily.ChildName := FChosenChildName;
- PoFamily.RunTests(Options, ErrorCount, WarningCount, SL);
+ PoFamily.RunTests(TestTypes, TestOptions, ErrorCount, WarningCount, SL);
debugln('RunSelectedTests: ', Format(sTotalErrors, [ErrorCount]));
debugln(' ', Format(sTotalWarnings, [WarningCount]));
if (ErrorCount > 0) or (WarningCount > 0) or
- (ptoCheckStatistics in Options) then
+ (pttCheckStatistics in TestTypes) then
begin
SL.Add(Format(sTotalErrors, [ErrorCount]));
SL.Add(Format(sTotalWarnings, [WarningCount]));
diff --git a/components/pochecker/pofamilies.pp b/components/pochecker/pofamilies.pp
index f89531cae9..5c013d01de 100644
--- a/components/pochecker/pofamilies.pp
+++ b/components/pochecker/pofamilies.pp
@@ -13,23 +13,23 @@ uses
Type
- TPoTestOption = (ptoCheckNrOfItems, ptoCheckFormatArgs, ptoCheckMissingIdentifiers,
- ptoCheckMismatchedOriginals, ptoCheckDuplicateOriginals, ptoCheckStatistics,
- ptoFindAllChildren);
- TPoTestOptions = Set of TPoTestOption;
+ TPoTestType = (pttCheckNrOfItems, pttCheckFormatArgs, pttCheckMissingIdentifiers,
+ pttCheckMismatchedOriginals, pttCheckDuplicateOriginals, pttCheckStatistics);
+ TPoTestTypes = Set of TPoTestType;
+
+ TPoTestOption = (ptoFindAllChildren, ptoIgnoreFuzzyStrings);
+ TPoTestOptions = set of TPoTestOption;
const
- optRunAllTests: TPoTestOptions = [];
- optRunAllTestsOnAllChildren: TPoTestOptions = [];
+ optRunAllTests: TPoTestTypes = [];
- PoTestOptionNames: array[TPoTestOption] of String = (
+ PoTestTypeNames: array[TPoTestType] of String = (
sCheckNumberOfItems,
sCheckForIncompatibleFormatArguments,
sCheckMissingIdentifiers,
sCheckForMismatchesInUntranslatedStrings,
sCheckForDuplicateUntranslatedValues,
- sCheckStatistics,
- sFindAllTranslatedPoFiles
+ sCheckStatistics
);
Type
@@ -61,14 +61,15 @@ Type
protected
procedure CheckNrOfItems(out ErrorCount: Integer; ErrorLog: TStrings);
- procedure CheckFormatArgs(out ErrorCount: Integer; ErrorLog: TStrings);
+ procedure CheckFormatArgs(out ErrorCount: Integer; ErrorLog: TStrings; IgnoreFuzzyStrings: Boolean);
procedure CheckMissingIdentifiers(out ErrorCount: Integer; ErrorLog: TStrings);
procedure CheckMismatchedOriginals(out ErrorCount: Integer; ErrorLog: TStrings);
procedure CheckDuplicateOriginals(out WarningCount: Integer; ErrorLog: TStrings);
procedure CheckStatistics(out WarningCount: Integer; ErrorLog: TStrings);
public
- procedure RunTests(const Options: TPoTestOptions; out ErrorCount, WarningCount: Integer; ErrorLog: TStrings);
+ procedure RunTests(const TestTypes: TPoTestTypes; const TestOptions: TPoTestOptions;
+ out ErrorCount, WarningCount: Integer; ErrorLog: TStrings);
property Master: TSimplePoFile read FMaster;
property Child: TSimplePoFile read FChild;
@@ -349,7 +350,7 @@ end;
procedure TPoFamily.CheckNrOfItems(out ErrorCount: Integer; ErrorLog: TStrings);
begin
//debugln('TPoFamily.CheckNrOfItems');
- DoTestStart(PoTestOptionNames[ptoCheckNrOfItems], ShortChildName);
+ DoTestStart(PoTestTypeNames[pttCheckNrOfItems], ShortChildName);
if (FMaster.Count <> FChild.Count) then
begin
ErrorCount := 1;
@@ -366,17 +367,18 @@ begin
ErrorLog.Add('');
end
else ErrorCount := NoError;
- DoTestEnd(PoTestOptionNames[ptoCheckNrOfItems], ErrorCount);
+ DoTestEnd(PoTestTypeNames[pttCheckNrOfItems], ErrorCount);
//debugln('TPoFamily.CheckNrOfItemsMismatch: ',Dbgs(ErrorCount),' Errors');
end;
-procedure TPoFamily.CheckFormatArgs(out ErrorCount: Integer; ErrorLog: TStrings);
+procedure TPoFamily.CheckFormatArgs(out ErrorCount: Integer; ErrorLog: TStrings; IgnoreFuzzyStrings: Boolean);
var
i: Integer;
CPoItem: TPOFileItem;
+ IsFuzzy: Boolean;
begin
//debugln('TPoFamily.CheckFormatArgs');
- DoTestStart(PoTestOptionNames[ptoCheckFormatArgs], ShortChildName);
+ DoTestStart(PoTestTypeNames[pttCheckFormatArgs], ShortChildName);
ErrorCount := NoError;
//for i := 0 to FMaster.Count - 1 do
for i := 0 to FChild.Count - 1 do
@@ -387,7 +389,9 @@ begin
//CPoItem := FChild.FindPoItem(MPoItem.Identifier);
if Assigned(CPoItem) then
begin
- if (Length(CPoItem.Translation) > 0) and (CompareFormatArgs(CPoItem.Original, CPoItem.Translation) = false) then
+ IsFuzzy := (Pos('fuzzy', CPoItem.Flags) > 0);
+ //if (IgnoreFuzzyStrings and IsFuzzy) then debugln('Skipping fuzzy translation: ',CPoItem.Translation);
+ if (Length(CPoItem.Translation) > 0) and (not (IgnoreFuzzyStrings and IsFuzzy)) and (not CompareFormatArgs(CPoItem.Original, CPoItem.Translation)) then
begin
if (ErrorCount = 0) then
begin
@@ -402,6 +406,7 @@ begin
ErrorLog.Add(Format(sFormatArgsID,[sCommentIdentifier, CPoItem.Identifier]));
ErrorLog.Add(Format(sFormatArgsValues,[sMsgID,CPoItem.Original,sOriginal]));
ErrorLog.Add(Format(sFormatArgsValues,[sMsgStr,CPoItem.Translation,sTranslation]));
+ if IsFuzzy then ErrorLog.Add(sNoteTranslationIsFuzzy);
ErrorLog.Add('');
end;
end;
@@ -413,7 +418,7 @@ begin
ErrorLog.Add('');
ErrorLog.Add('');
end;
- DoTestEnd(PoTestOptionNames[ptoCheckFormatArgs], ErrorCount);
+ DoTestEnd(PoTestTypeNames[pttCheckFormatArgs], ErrorCount);
//debugln('TPoFamily.CheckIncompatibleFormatArgs: ',Dbgs(ErrorCount),' Errors');
end;
@@ -424,7 +429,7 @@ var
MPoItem, CPoItem: TPOFileItem;
begin
//debugln('TPoFamily.CheckMissingIdentifiers');
- DoTestStart(PoTestOptionNames[ptoCheckMissingIdentifiers], ShortChildName);
+ DoTestStart(PoTestTypeNames[pttCheckMissingIdentifiers], ShortChildName);
ErrorCount := NoError;
for i := 0 to FMaster.Count - 1 do
begin
@@ -484,7 +489,7 @@ begin
ErrorLog.Add('');
ErrorLog.Add('');
end;
- DoTestEnd(PoTestOptionNames[ptoCheckMissingIdentifiers], ErrorCount);
+ DoTestEnd(PoTestTypeNames[pttCheckMissingIdentifiers], ErrorCount);
//debugln('TPoFamily.CheckMissingIdentifiers: ',Dbgs(ErrorCount),' Errors');
end;
@@ -495,7 +500,7 @@ var
MPoItem, CPoItem: TPOFileItem;
begin
//debugln('TPoFamily.CheckMismatchedOriginals');
- DoTestStart(PoTestOptionNames[ptoCheckMismatchedOriginals], ShortChildName);
+ DoTestStart(PoTestTypeNames[pttCheckMismatchedOriginals], ShortChildName);
ErrorCount := NoError;
for i := 0 to FMaster.Count - 1 do
begin
@@ -529,7 +534,7 @@ begin
ErrorLog.Add('');
ErrorLog.Add('');
end;
- DoTestEnd(PoTestOptionNames[ptoCheckMismatchedOriginals], ErrorCount);
+ DoTestEnd(PoTestTypeNames[pttCheckMismatchedOriginals], ErrorCount);
//debugln('TPoFamily.CheckMismatchedOriginals: ',Dbgs(ErrorCount),' Errors');
end;
@@ -541,7 +546,7 @@ var
LastHash, CurHash: Cardinal;
begin
//debugln('TPoFamily.CheckMismatchedOriginals');
- DoTestStart(PoTestOptionNames[ptoCheckDuplicateOriginals], ShortMasterName);
+ DoTestStart(PoTestTypeNames[pttCheckDuplicateOriginals], ShortMasterName);
WarningCount := 0;
//debugln('TPoFamily.CehckDuplicateOriginals');
@@ -586,7 +591,7 @@ begin
ErrorLog.Add('');
end;
- DoTestEnd(PoTestOptionNames[ptoCheckDuplicateOriginals], WarningCount);
+ DoTestEnd(PoTestTypeNames[pttCheckDuplicateOriginals], WarningCount);
//debugln('TPoFamily.CheckDuplicateOriginals: ',Dbgs(WarningCount),' Errors');
end;
@@ -636,18 +641,18 @@ begin
ErrorLog.Add('');
end;
WarningCount := NrTotal;
- DoTestEnd(PoTestOptionNames[ptoCheckFormatArgs], WarningCount);
+ DoTestEnd(PoTestTypeNames[pttCheckFormatArgs], WarningCount);
//debugln('TPoFamily.CheckIncompatibleFormatArgs: ',Dbgs(ErrorCount),' Errors');
end;
{
-procedure TPoFamily.RunTests(const Options: TPoTestOptions; out
+procedure TPoFamily.RunTests(const Options: TPoTestTypes; out
Pre conditions:
* Master and a matching Child must be assigned at start ot testing
* If a Child is assigned it must be child of Master
}
-procedure TPoFamily.RunTests(const Options: TPoTestOptions; out
- ErrorCount, WarningCount: Integer; ErrorLog: TStrings);
+procedure TPoFamily.RunTests(const TestTypes: TPoTestTypes; const TestOptions: TPoTestOptions;
+ out ErrorCount, WarningCount: Integer; ErrorLog: TStrings);
var
SL: TStringList;
CurrErrCnt, CurrWarnCnt: Integer;
@@ -680,7 +685,7 @@ begin
Exit;
end
end;
- if not Assigned(FChild) and ([ptoFindAllChildren, ptoCheckDuplicateOriginals] * Options = []) then
+ if not Assigned(FChild) and not ((pttCheckDuplicateOriginals in Testtypes) or (ptoFindAllChildren in TestOptions)) then
begin
{$ifdef DebugSimplePoFiles}
Debugln('TPoFamily.RunTests: no child assigned for ',ShortMasterName);
@@ -688,7 +693,7 @@ begin
Exit;
end;
- if (ptoFindAllChildren in Options) then
+ if (ptoFindAllChildren in TestOptions) then
begin
SL := FindAllTranslatedPoFiles(FMasterName);
//We want current Child (if currently assigned) at index 0
@@ -715,7 +720,7 @@ begin
try
//First run checks that are Master-only
- if (ptoCheckDuplicateOriginals in Options) then
+ if (pttCheckDuplicateOriginals in TestTypes) then
begin
CheckDuplicateOriginals(CurrWarnCnt, ErrorLog);
WarningCount := CurrWarnCnt + WarningCount;
@@ -725,7 +730,7 @@ begin
Debugln('TPoFamily.RunTests: number of childs for testing = ',DbgS(Sl.Count));
{$endif}
- if (Options - [ptoCheckDuplicateOriginals] <> []) and (Sl.Count = 0) then
+ if (TestTypes - [pttCheckDuplicateOriginals] <> []) and (Sl.Count = 0) then
begin
{$ifdef DebugSimplePoFiles}
Debugln('TPoFamily.RunTests: Warning: No child selected or found for selected tests');
@@ -743,38 +748,38 @@ begin
//debugln('TPoFamily.RunTests: setting ChildName to ',CurrChildName);
SetChildName(CurrChildName);
- if (ptoCheckNrOfItems in Options) then
+ if (pttCheckNrOfItems in TestTypes) then
begin
CheckNrOfItems(CurrErrCnt, ErrorLog);
ErrorCount := CurrErrCnt + ErrorCount;
end;
- if (ptoCheckFormatArgs in Options) then
+ if (pttCheckFormatArgs in TestTypes) then
begin
- CheckFormatArgs(CurrErrCnt, ErrorLog);
+ CheckFormatArgs(CurrErrCnt, ErrorLog, (ptoIgnoreFuzzyStrings in TestOptions));
ErrorCount := CurrErrCnt + ErrorCount;
end;
- if (ptoCheckMissingIdentifiers in Options) then
+ if (pttCheckMissingIdentifiers in TestTypes) then
begin
CheckMissingIdentifiers(CurrErrCnt, ErrorLog);
ErrorCount := CurrErrCnt + ErrorCount;
end;
- if (ptoCheckMismatchedOriginals in Options) then
+ if (pttCheckMismatchedOriginals in TestTypes) then
begin
CheckMismatchedOriginals(CurrErrCnt, ErrorLog);
ErrorCount := CurrErrCnt + ErrorCount;
end;
- if (ptoCheckStatistics in Options) then
+ if (pttCheckStatistics in TestTypes) then
begin
CheckStatistics(CurrErrCnt, ErrorLog);
ErrorCount := CurrErrCnt + ErrorCount;
end;
{
- if (pto in Options) then
+ if (ptt in TestTypes) then
begin
Check(CurrErrCnt, ErrorLog);
ErrorCount := CurrErrCnt + ErrorCount;
@@ -789,10 +794,9 @@ end;
procedure InitTestOptions;
var
- Index: TPoTestOption;
+ Index: TPoTestType;
begin
- for Index := Low(TPoTestOption) to High(TPotestOption) do optRunAllTestsOnAllChildren := optRunAllTestsOnAllChildren + [Index];
- optRunAllTests := optRunAllTestsOnAllChildren - [ptoFindAllChildren];
+ for Index := Low(TPoTestType) to High(TPoTestType) do optRunAllTests := optRunAllTests + [Index];
end;
Initialization