Skip to content

Commit 569d5f7

Browse files
committed
fix: Change the translation language of the application in dock #1100
Configure name retrieval in three levels fix-Bug-translation
1 parent 123fdb4 commit 569d5f7

File tree

2 files changed

+17
-0
lines changed

2 files changed

+17
-0
lines changed

panels/dock/taskmanager/desktopfileamparser.cpp

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -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+
249263
void 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
}

panels/dock/taskmanager/desktopfileamparser.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -47,6 +47,7 @@ class DesktopFileAMParser : public DesktopfileAbstractParser
4747
QString id2dbusPath(const QString& id);
4848
void connectToAmDBusSignal(const QString& propertyName, const char* slot);
4949
void launchByAMTool(const QString &action = QString());
50+
QString getLocaleName(const QString& currentLanguageCode, const QStringMap& names);
5051

5152
private Q_SLOTS:
5253
void updateActions();

0 commit comments

Comments
 (0)