Skip to content

Commit a243fce

Browse files
committed
fix: Use the system default language when unable to retrieve users
Use the system default language when unable to retrieve users pms: BUG-286715
1 parent 5eaf78b commit a243fce

3 files changed

Lines changed: 44 additions & 5 deletions

File tree

dss-network-plugin/networkmodule.cpp

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -171,8 +171,9 @@ void NetworkModule::installTranslator(const QString &locale)
171171
}
172172
localTmp = locale;
173173
QApplication::removeTranslator(&translator);
174-
translator.load(QLocale(locale), "dss-network-plugin", "_", "/usr/share/dss-network-plugin/translations");
175-
QApplication::installTranslator(&translator);
174+
if (translator.load(QLocale(locale), "dss-network-plugin", "_", "/usr/share/dss-network-plugin/translations")) {
175+
QApplication::installTranslator(&translator);
176+
}
176177
m_manager->updateLanguage(localTmp);
177178
}
178179

network-service-plugin/system/networkinitialization.cpp

Lines changed: 39 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -20,9 +20,11 @@
2020
#include <QDBusMessage>
2121
#include <QDBusServiceWatcher>
2222
#include <QEventLoop>
23+
#include <QFile>
2324
#include <QJsonDocument>
2425
#include <QJsonObject>
2526
#include <QJsonParseError>
27+
#include <QMap>
2628
#include <QMutex>
2729
#include <QTimer>
2830
#include <QTranslator>
@@ -110,10 +112,12 @@ void NetworkInitialization::initConnection()
110112
// 调用checkAccountStatus检查当前用户状态并安装当前用户的语言
111113
qCDebug(DSM) << "check connection status";
112114
checkAccountStatus();
113-
if (!m_initilized)
115+
if (!m_initilized) {
114116
qCWarning(DSM) << "can not found current user, used default lauguage to create connection";
115-
// 不管语言有没有安装上,直接添加新连接,如果语言没有安装上,这个时候肯定不会有当前用户的语言了,此时安装就安装默认的英文
116-
// 如果语言安装上了,此时就使用已经安装的语言来新建连接
117+
// 不管语言有没有安装上,直接添加新连接,如果语言没有安装上,这个时候肯定不会有当前用户的语言了,此时安装就安装默认的
118+
// 如果语言安装上了,此时就使用已经安装的语言来新建连接
119+
installSystemTranslator();
120+
}
117121
addFirstConnection();
118122
});
119123
}
@@ -371,6 +375,11 @@ bool NetworkInitialization::installUserTranslator(const QString &json)
371375
return false;
372376
}
373377

378+
return installTranslator(locale);
379+
}
380+
381+
bool NetworkInitialization::installTranslator(const QString &locale)
382+
{
374383
static QString localTmp;
375384

376385
if (localTmp != locale) {
@@ -388,6 +397,33 @@ bool NetworkInitialization::installUserTranslator(const QString &json)
388397
return true;
389398
}
390399

400+
bool NetworkInitialization::installSystemTranslator()
401+
{
402+
QFile file("/etc/locale.conf");
403+
if (file.open(QFile::ReadOnly)) {
404+
QMap<QString, QString> localeMap;
405+
QString data = file.readAll();
406+
QStringList lines = data.split('\n');
407+
for (auto &&line : lines) {
408+
QStringList pair = line.split('=');
409+
if (pair.size() == 2) {
410+
localeMap.insert(pair.at(0).trimmed(), pair.at(1).trimmed());
411+
}
412+
}
413+
QString locale;
414+
if (localeMap.contains("LANGUAGE")) {
415+
locale = localeMap.value("LANGUAGE").split('.').first();
416+
} else if (localeMap.contains("LANG")) {
417+
locale = localeMap.value("LANG").split('.').first();
418+
} else {
419+
return false;
420+
}
421+
qCInfo(DSM) << "Install system language:" << locale;
422+
return installTranslator(locale);
423+
}
424+
return false;
425+
}
426+
391427
void NetworkInitialization::hideWirelessDevice(const QSharedPointer<NetworkManager::Device> &device, bool disableNetwork)
392428
{
393429
if (!disableNetwork)

network-service-plugin/system/networkinitialization.h

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -37,6 +37,8 @@ class NetworkInitialization : public QObject
3737
bool hasConnection(const QSharedPointer<NetworkManager::WiredDevice> &device, QList<QSharedPointer<NetworkManager::Connection>> &unSaveDevices);
3838
QString connectionMatchName() const;
3939
bool installUserTranslator(const QString &json);
40+
bool installTranslator(const QString &locale);
41+
bool installSystemTranslator();
4042
void hideWirelessDevice(const QSharedPointer<NetworkManager::Device> &device, bool disableNetwork);
4143
void initDeviceConnection(const QSharedPointer<NetworkManager::WiredDevice> &device);
4244
void checkAccountStatus();

0 commit comments

Comments
 (0)