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+
391427void NetworkInitialization::hideWirelessDevice (const QSharedPointer<NetworkManager::Device> &device, bool disableNetwork)
392428{
393429 if (!disableNetwork)
0 commit comments