Skip to content

Commit b38e79c

Browse files
committed
Run QA checks right after pre-translation
1 parent f542d8f commit b38e79c

File tree

1 file changed

+12
-4
lines changed

1 file changed

+12
-4
lines changed

src/pretranslate.cpp

Lines changed: 12 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,7 @@
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
6869
class Worker
6970
{
7071
public:
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

165170
protected:
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
174180
class LocalDBWorker : public Worker
175181
{
176182
public:
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

Comments
 (0)