diff options
Diffstat (limited to 'src/modules/options')
| -rw-r--r-- | src/modules/options/optw_textencoding.cpp | 32 |
1 files changed, 25 insertions, 7 deletions
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 <tqdir.h> #include <tqmessagebox.h> +#include <algorithm> +#include <filesystem> +#include <vector> + 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<fs::path> 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; |
