update: refactored QvTranslator helper

This commit is contained in:
QxQ 2020-09-20 11:22:22 +08:00
parent 3a513385b8
commit bafa151cb0
3 changed files with 13 additions and 8 deletions

View File

@ -1 +1 @@
5920 5921

View File

@ -25,25 +25,25 @@ namespace Qv2ray::common
{ {
QvTranslator::QvTranslator() QvTranslator::QvTranslator()
{ {
GetAvailableLanguages(); refreshTranslations();
} }
QStringList QvTranslator::GetAvailableLanguages() void QvTranslator::refreshTranslations()
{ {
searchPaths = getLanguageSearchPaths();
languages.clear(); languages.clear();
for (const auto &path : getLanguageSearchPaths()) for (const auto &path : searchPaths)
{ {
languages << QDir(path).entryList(QStringList{ "*.qm" }, QDir::Hidden | QDir::Files); languages << QDir(path).entryList({ "*.qm" }, QDir::Hidden | QDir::Files);
} }
std::transform(languages.begin(), languages.end(), languages.begin(), [](QString &fileName) { return fileName.replace(".qm", ""); }); std::transform(languages.begin(), languages.end(), languages.begin(), [](QString &fileName) { return fileName.replace(".qm", ""); });
languages.removeDuplicates(); languages.removeDuplicates();
DEBUG(MODULE_UI, "Found translations: " + languages.join(" ")) DEBUG(MODULE_UI, "Found translations: " + languages.join(" "))
return languages;
} }
bool QvTranslator::InstallTranslation(const QString &code) bool QvTranslator::InstallTranslation(const QString &code)
{ {
for (const auto &path : getLanguageSearchPaths()) for (const auto &path : searchPaths)
{ {
if (FileExistsIn(QDir(path), code + ".qm")) if (FileExistsIn(QDir(path), code + ".qm"))
{ {

View File

@ -16,7 +16,10 @@ namespace Qv2ray::common
* @brief get the available languages. * @brief get the available languages.
* @return (if available) languages (zh_CN, en_US, ...) * @return (if available) languages (zh_CN, en_US, ...)
*/ */
QStringList GetAvailableLanguages(); const inline QStringList GetAvailableLanguages() const
{
return languages;
}
/** /**
* @brief reload the translation from file * @brief reload the translation from file
* @param code eg: en_US, zh_CN, ... * @param code eg: en_US, zh_CN, ...
@ -24,7 +27,9 @@ namespace Qv2ray::common
bool InstallTranslation(const QString &); bool InstallTranslation(const QString &);
private: private:
void refreshTranslations();
QStringList languages; QStringList languages;
QStringList searchPaths;
std::unique_ptr<QTranslator> pTranslator; std::unique_ptr<QTranslator> pTranslator;
}; };
inline std::unique_ptr<common::QvTranslator> Qv2rayTranslator; inline std::unique_ptr<common::QvTranslator> Qv2rayTranslator;