From caab44d2c486b491b7be3be795bb711ebc46625f Mon Sep 17 00:00:00 2001 From: Michele Calgaro Date: Mon, 29 Dec 2025 18:39:37 +0900 Subject: Look for translation .mo files in the new location Signed-off-by: Michele Calgaro --- src/modules/options/optw_textencoding.cpp | 32 ++++++++++++++++++++++++------- 1 file changed, 25 insertions(+), 7 deletions(-) (limited to 'src/modules/options/optw_textencoding.cpp') diff --git a/src/modules/options/optw_textencoding.cpp b/src/modules/options/optw_textencoding.cpp index fc915ed..b44a498 100644 --- a/src/modules/options/optw_textencoding.cpp +++ b/src/modules/options/optw_textencoding.cpp @@ -30,6 +30,10 @@ #include #include +#include +#include +#include + TQString g_szPrevSettedLocale; KviTextEncodingOptionsWidget::KviTextEncodingOptionsWidget(TQWidget * parent) @@ -82,15 +86,29 @@ KviTextEncodingOptionsWidget::KviTextEncodingOptionsWidget(TQWidget * parent) TQString szLocaleDir; g_pApp->getGlobalKvircDirectory(szLocaleDir,KviApp::Locale); - TQStringList list=TQDir(szLocaleDir).entryList("kvirc_*.mo",TQDir::Files); - + // Find available translations by checking for existance of kvirc.mo files + namespace fs = std::filesystem; + std::vector translationPaths; + const fs::path localeDir { szLocaleDir.local8Bit().data() }; + for (const auto &dir : fs::directory_iterator(localeDir)) + { + if (!dir.is_directory()) + { + continue; + } + + if (fs::exists(dir.path()/"LC_MESSAGES/kvirc.mo")) + { + translationPaths.push_back(dir.path().filename()); + } + } + std::sort(translationPaths.begin(), translationPaths.end()); + i = 0; iMatch = 0; - - for ( TQStringList::Iterator it = list.begin(); it != list.end(); ++it ) { - TQString szTmp=*it; - szTmp.replace("kvirc_",""); - szTmp.replace(".mo",""); + for (const auto &filename : translationPaths) + { + TQString szTmp { filename.c_str() }; m_pForcedLocaleCombo->insertItem(szTmp); if(KviTQString::equalCI(szTmp,m_szLanguage)) iMatch = i + 2; -- cgit v1.2.3