Invert order of translations and (de)composition
Example: This allows a to be translated into ά, as a is first translated to α and finally ZRCola composed into ά. Otherwise we'd need to include all accented character translations in transliteration tables. Signed-off-by: Simon Rozman <simon@rozman.si>
This commit is contained in:
parent
4393b02323
commit
c598fe4fe0
@ -95,15 +95,6 @@ void wxZRColaComposerPanel::SynchronizePanels()
|
|||||||
|
|
||||||
m_mapping.clear();
|
m_mapping.clear();
|
||||||
|
|
||||||
if (app->m_mainWnd->m_composition) {
|
|
||||||
// ZRCola decompose first, then re-compose.
|
|
||||||
app->m_t_db.TranslateInv(ZRCOLA_TRANSEQID_DEFAULT, dst.data(), dst.size(), dst2, &map);
|
|
||||||
m_mapping.push_back(std::move(map));
|
|
||||||
|
|
||||||
app->m_t_db.Translate(ZRCOLA_TRANSEQID_DEFAULT, dst2.data(), dst2.size(), dst, &map);
|
|
||||||
m_mapping.push_back(std::move(map));
|
|
||||||
}
|
|
||||||
|
|
||||||
// Other translations
|
// Other translations
|
||||||
const ZRCola::transetid_t *sets_begin, *sets_end;
|
const ZRCola::transetid_t *sets_begin, *sets_end;
|
||||||
GetTranslationSeq(sets_begin, sets_end);
|
GetTranslationSeq(sets_begin, sets_end);
|
||||||
@ -113,6 +104,15 @@ void wxZRColaComposerPanel::SynchronizePanels()
|
|||||||
dst = std::move(dst2);
|
dst = std::move(dst2);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (app->m_mainWnd->m_composition) {
|
||||||
|
// ZRCola decompose first, then re-compose.
|
||||||
|
app->m_t_db.TranslateInv(ZRCOLA_TRANSEQID_DEFAULT, dst.data(), dst.size(), dst2, &map);
|
||||||
|
m_mapping.push_back(std::move(map));
|
||||||
|
|
||||||
|
app->m_t_db.Translate(ZRCOLA_TRANSEQID_DEFAULT, dst2.data(), dst2.size(), dst, &map);
|
||||||
|
m_mapping.push_back(std::move(map));
|
||||||
|
}
|
||||||
|
|
||||||
m_source->GetSelection(&m_selSource.first, &m_selSource.second);
|
m_source->GetSelection(&m_selSource.first, &m_selSource.second);
|
||||||
|
|
||||||
// Update source HEX dump.
|
// Update source HEX dump.
|
||||||
@ -139,20 +139,20 @@ void wxZRColaComposerPanel::SynchronizePanels()
|
|||||||
|
|
||||||
m_mapping.clear();
|
m_mapping.clear();
|
||||||
|
|
||||||
// Other translations
|
if (app->m_mainWnd->m_composition) {
|
||||||
const ZRCola::transetid_t *sets_begin, *sets_end;
|
// ZRCola decompose.
|
||||||
GetTranslationSeq(sets_begin, sets_end);
|
app->m_t_db.TranslateInv(ZRCOLA_TRANSEQID_DEFAULT, dst.data(), dst.size(), &app->m_lc_db, app->m_mainWnd->m_settings->m_lang, dst2, &map);
|
||||||
for (auto s = sets_end; (s--) != sets_begin;) {
|
|
||||||
app->m_t_db.TranslateInv(*s, dst.data(), dst.size(), dst2, &map);
|
|
||||||
dst = std::move(dst2);
|
dst = std::move(dst2);
|
||||||
|
|
||||||
map.invert();
|
map.invert();
|
||||||
m_mapping.push_back(std::move(map));
|
m_mapping.push_back(std::move(map));
|
||||||
}
|
}
|
||||||
|
|
||||||
if (app->m_mainWnd->m_composition) {
|
// Other translations
|
||||||
// ZRCola decompose.
|
const ZRCola::transetid_t *sets_begin, *sets_end;
|
||||||
app->m_t_db.TranslateInv(ZRCOLA_TRANSEQID_DEFAULT, dst.data(), dst.size(), &app->m_lc_db, app->m_mainWnd->m_settings->m_lang, dst2, &map);
|
GetTranslationSeq(sets_begin, sets_end);
|
||||||
|
for (auto s = sets_end; (s--) != sets_begin;) {
|
||||||
|
app->m_t_db.TranslateInv(*s, dst.data(), dst.size(), dst2, &map);
|
||||||
dst = std::move(dst2);
|
dst = std::move(dst2);
|
||||||
|
|
||||||
map.invert();
|
map.invert();
|
||||||
|
Loading…
x
Reference in New Issue
Block a user