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()
{
GetAvailableLanguages();
refreshTranslations();
}
QStringList QvTranslator::GetAvailableLanguages()
void QvTranslator::refreshTranslations()
{
searchPaths = getLanguageSearchPaths();
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", ""); });
languages.removeDuplicates();
DEBUG(MODULE_UI, "Found translations: " + languages.join(" "))
return languages;
}
bool QvTranslator::InstallTranslation(const QString &code)
{
for (const auto &path : getLanguageSearchPaths())
for (const auto &path : searchPaths)
{
if (FileExistsIn(QDir(path), code + ".qm"))
{

View File

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