3030#include " progress.h"
3131#include " str_helpers.h"
3232#include " tm/transmem.h"
33+ #include " qa_checks.h"
3334
3435#include < wx/stopwatch.h>
3536
@@ -68,7 +69,8 @@ struct JobMetadata
6869class Worker
6970{
7071public:
71- Worker (const JobMetadata& meta) : m_metadata(meta), m_completed(false ) {}
72+ Worker (const JobMetadata& meta, std::shared_ptr<QAChecker> checker)
73+ : m_metadata(meta), m_checker(checker), m_completed(false ) {}
7274 virtual ~Worker () {}
7375
7476 // / Add another item for processing
@@ -147,6 +149,9 @@ class Worker
147149 }
148150 dt->SetFuzzy (isFuzzy);
149151
152+ if (m_checker)
153+ m_checker->Check (dt);
154+
150155 return res.IsExactMatch () ? ResType::Exact : ResType::Fuzzy;
151156 }
152157
@@ -164,6 +169,7 @@ class Worker
164169
165170protected:
166171 JobMetadata m_metadata;
172+ std::shared_ptr<QAChecker> m_checker;
167173
168174 mutable std::mutex m_mutex;
169175 std::deque<CatalogItemPtr> m_queue;
@@ -174,8 +180,8 @@ class Worker
174180class LocalDBWorker : public Worker
175181{
176182public:
177- LocalDBWorker (const JobMetadata& meta)
178- : Worker(meta), m_tm(TranslationMemory::Get())
183+ LocalDBWorker (const JobMetadata& meta, std::shared_ptr<QAChecker> checker )
184+ : Worker(meta, checker ), m_tm(TranslationMemory::Get())
179185 {
180186 const auto nthreads = std::clamp (std::thread::hardware_concurrency (), 4u , 16u );
181187 for (unsigned i = 0 ; i < nthreads; ++i)
@@ -309,7 +315,9 @@ std::shared_ptr<Stats> PreTranslateCatalog(CatalogPtr catalog,
309315 metadata.nplurals = metadata.lang .nplurals ();
310316 metadata.options = options;
311317
312- auto worker_local = use_local_tm ? std::make_unique<LocalDBWorker>(metadata) : nullptr ;
318+ auto qa_checker = QAChecker::GetFor (*catalog);
319+
320+ auto worker_local = use_local_tm ? std::make_unique<LocalDBWorker>(metadata, qa_checker) : nullptr ;
313321
314322 if (worker_local)
315323 worker_local->stats = stats;
0 commit comments