@@ -241,16 +241,31 @@ void DesktopFileAMParser::updateActions()
241241
242242 for (auto action : actions) {
243243 auto localeName = actionNames.value (action).value (currentLanguageCode);
244+ auto localeName = getLocaleName (currentLanguageCode, actionNames.value (action));
244245 auto fallbackDefaultName = actionNames.value (action).value (DEFAULT_KEY);
245246 m_actions.append ({action, localeName.isEmpty () ? fallbackDefaultName : localeName});
246247 }
247248}
248249
250+ QString DesktopFileAMParser::getLocaleName (const QString& currentLanguageCode, const QStringMap& names)
251+ {
252+ auto localeName = names.value (currentLanguageCode);
253+ if ( currentLanguageCode.contains (' _' ) && !(names.contains (currentLanguageCode))) {
254+ {
255+ auto prefix = currentLanguageCode.split (' _' )[0 ];
256+ if (names.contains (prefix)) {
257+ localeName = names.value (prefix);
258+ }
259+ }
260+ return localeName;
261+ }
262+
249263void DesktopFileAMParser::updateLocalName ()
250264{
251265 QString currentLanguageCode = QLocale::system ().name ();
252266 auto names = m_applicationInterface->name ();
253267 auto localeName = names.value (currentLanguageCode);
268+ auto localeName = getLocaleName (currentLanguageCode, names);
254269 auto fallbackName = names.value (DEFAULT_KEY);
255270 m_name = localeName.isEmpty () ? fallbackName : localeName;
256271}
@@ -265,6 +280,7 @@ void DesktopFileAMParser::updateLocalGenericName()
265280 QString currentLanguageCode = QLocale::system ().name ();
266281 auto genericNames = m_applicationInterface->genericName ();
267282 auto localeGenericName = genericNames.value (currentLanguageCode);
283+ auto localeGenericName = getLocaleName (currentLanguageCode, genericNames);
268284 auto fallBackGenericName = genericNames.value (DEFAULT_KEY);
269285 m_genericName = localeGenericName.isEmpty () ? fallBackGenericName : localeGenericName;
270286}
0 commit comments