diff --git a/applets/dde-apps/amappitem.cpp b/applets/dde-apps/amappitem.cpp index 4f09c5ac0..6cf3261a9 100644 --- a/applets/dde-apps/amappitem.cpp +++ b/applets/dde-apps/amappitem.cpp @@ -106,11 +106,19 @@ void AMAppItem::setOnDesktop(bool on) AppItem::setOnDesktop(on); } -QString AMAppItem::getLocaleOrDefaultValue(const QStringMap &value, const QString &targetKey, const QString &fallbackKey) +QString AMAppItem::getLocaleOrDefaultValue(const QStringMap &value, const QString &localeCode, const QString &fallbackKey) { - auto targetValue = value.value(targetKey); - auto fallbackValue = value.value(fallbackKey); - return !targetValue.isEmpty() ? targetValue : fallbackValue; + if (value.contains(localeCode)) { + return value.value(localeCode); + } else { + QString fallbackValue = value.value(fallbackKey); + if (localeCode.contains('_')) { + QString prefix = localeCode.split('_')[0]; + return value.value(prefix, fallbackValue); + } else { + return fallbackValue; + } + } } void AMAppItem::onPropertyChanged(const QDBusMessage &msg) @@ -133,7 +141,7 @@ void AMAppItem::onPropertyChanged(const QDBusMessage &msg) AppItem::setAppName(name); } - auto iconName = getLocaleOrDefaultValue(Application::icons(), DESKTOP_ENTRY_ICON_KEY, ""); + auto iconName = Application::icons().value(DESKTOP_ENTRY_ICON_KEY); AppItem::setAppIconName(iconName); AppItem::setNoDisPlay(Application::noDisplay()); @@ -160,7 +168,7 @@ void AMAppItem::updateActions(const QStringList &actions, const PropMap &actionN auto localeNames = actionName.value(action); QJsonObject actionObject; actionObject.insert(QStringLiteral("id"), action); - actionObject.insert(QStringLiteral("name"), getLocaleOrDefaultValue(localeNames, action, DEFAULT_KEY)); + actionObject.insert(QStringLiteral("name"), getLocaleOrDefaultValue(localeNames, locale, DEFAULT_KEY)); actionsArray.append(actionObject); } if (actions.size() > 0) { diff --git a/applets/dde-apps/amappitem.h b/applets/dde-apps/amappitem.h index 14cf98143..05607233b 100644 --- a/applets/dde-apps/amappitem.h +++ b/applets/dde-apps/amappitem.h @@ -22,7 +22,7 @@ class AMAppItem : public Application, public AppItem void setOnDesktop(bool on) override; private: - QString getLocaleOrDefaultValue(const QStringMap &value, const QString &targetKey, const QString &fallbackKey); + QString getLocaleOrDefaultValue(const QStringMap &value, const QString &localeCode, const QString &fallbackKey); void updateActions(const QStringList &actions, const PropMap &actionName); private Q_SLOTS: