From 39c3f660c5c04c3dd2c14adb41ac5b0746f25677 Mon Sep 17 00:00:00 2001 From: wjyrich <1071633242@qq.com> Date: Thu, 17 Apr 2025 12:13:05 +0800 Subject: [PATCH 1/2] fix: Change the translation language of the application in dock #1100 Configure name retrieval in three levels fix-Bug-translation --- .../dock/taskmanager/desktopfileamparser.cpp | 21 ++++++++++++++++--- panels/dock/taskmanager/desktopfileamparser.h | 1 + 2 files changed, 19 insertions(+), 3 deletions(-) diff --git a/panels/dock/taskmanager/desktopfileamparser.cpp b/panels/dock/taskmanager/desktopfileamparser.cpp index ed6f16ea0..f7893bde2 100644 --- a/panels/dock/taskmanager/desktopfileamparser.cpp +++ b/panels/dock/taskmanager/desktopfileamparser.cpp @@ -240,18 +240,32 @@ void DesktopFileAMParser::updateActions() auto actionNames = m_applicationInterface->actionName(); for (auto action : actions) { - auto localeName = actionNames.value(action).value(currentLanguageCode); + auto localeName = getLocaleName(currentLanguageCode, actionNames.value(action)); auto fallbackDefaultName = actionNames.value(action).value(DEFAULT_KEY); m_actions.append({action, localeName.isEmpty() ? fallbackDefaultName : localeName}); } } +QString DesktopFileAMParser::getLocaleName(const QString& currentLanguageCode, const QStringMap& names) +{ + auto localeName = names.value(currentLanguageCode); + if( currentLanguageCode.contains('_') && !(names.contains(currentLanguageCode))) + { + auto prefix = currentLanguageCode.split('_')[0]; + if (names.contains(prefix)) { + localeName = names.value(prefix); + } + } + return localeName; +} + void DesktopFileAMParser::updateLocalName() { QString currentLanguageCode = QLocale::system().name(); auto names = m_applicationInterface->name(); - auto localeName = names.value(currentLanguageCode); + auto localeName = getLocaleName(currentLanguageCode, names); auto fallbackName = names.value(DEFAULT_KEY); + m_name = localeName.isEmpty() ? fallbackName : localeName; } @@ -264,8 +278,9 @@ void DesktopFileAMParser::updateLocalGenericName() { QString currentLanguageCode = QLocale::system().name(); auto genericNames = m_applicationInterface->genericName(); - auto localeGenericName = genericNames.value(currentLanguageCode); + auto localeGenericName = getLocaleName(currentLanguageCode, genericNames); auto fallBackGenericName = genericNames.value(DEFAULT_KEY); + m_genericName = localeGenericName.isEmpty() ? fallBackGenericName : localeGenericName; } diff --git a/panels/dock/taskmanager/desktopfileamparser.h b/panels/dock/taskmanager/desktopfileamparser.h index 50d6ff075..6712ee343 100644 --- a/panels/dock/taskmanager/desktopfileamparser.h +++ b/panels/dock/taskmanager/desktopfileamparser.h @@ -47,6 +47,7 @@ class DesktopFileAMParser : public DesktopfileAbstractParser QString id2dbusPath(const QString& id); void connectToAmDBusSignal(const QString& propertyName, const char* slot); void launchByAMTool(const QString &action = QString()); + QString getLocaleName(const QString& currentLanguageCode, const QStringMap& names); private Q_SLOTS: void updateActions(); From e7d9e9d64d54eba5a96c12231c60a73f443b91cb Mon Sep 17 00:00:00 2001 From: zyz Date: Thu, 17 Apr 2025 17:49:32 +0800 Subject: [PATCH 2/2] Update desktopfileamparser.cpp --- panels/dock/taskmanager/desktopfileamparser.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/panels/dock/taskmanager/desktopfileamparser.cpp b/panels/dock/taskmanager/desktopfileamparser.cpp index f7893bde2..27ac23473 100644 --- a/panels/dock/taskmanager/desktopfileamparser.cpp +++ b/panels/dock/taskmanager/desktopfileamparser.cpp @@ -249,7 +249,7 @@ void DesktopFileAMParser::updateActions() QString DesktopFileAMParser::getLocaleName(const QString& currentLanguageCode, const QStringMap& names) { auto localeName = names.value(currentLanguageCode); - if( currentLanguageCode.contains('_') && !(names.contains(currentLanguageCode))) + if (currentLanguageCode.contains('_') && !(names.contains(currentLanguageCode))) { auto prefix = currentLanguageCode.split('_')[0]; if (names.contains(prefix)) {