diff --git a/modules/gui/qt/player/player_controlbar_model.cpp b/modules/gui/qt/player/player_controlbar_model.cpp index cc36cb222866e8a32e54620a60ea7aebc35a165e..ba55088597c87baba8bdd1b3106165ab32dc445d 100644 --- a/modules/gui/qt/player/player_controlbar_model.cpp +++ b/modules/gui/qt/player/player_controlbar_model.cpp @@ -21,8 +21,15 @@ #include <QMetaEnum> #include <QJSEngine> +#include "qt.hpp" #include "control_list_model.hpp" +decltype (PlayerControlbarModel::playerIdentifierDictionary) + PlayerControlbarModel::playerIdentifierDictionary { + {Mainplayer, N_("Mainplayer")}, + {Miniplayer, N_("Miniplayer")} + }; + QJSValue PlayerControlbarModel::getPlaylistIdentifierListModel(QQmlEngine *engine, QJSEngine *scriptEngine) { Q_UNUSED(engine) @@ -35,8 +42,20 @@ QJSValue PlayerControlbarModel::getPlaylistIdentifierListModel(QQmlEngine *engin { QJSValue obj = scriptEngine->newObject(); - obj.setProperty("identifier", metaEnum.value(i)); - obj.setProperty("name", metaEnum.key(i)); + const int val = metaEnum.value(i); + obj.setProperty("identifier", val); + + QString key; + if ( playerIdentifierDictionary.contains(static_cast<PlayerControlbarModel::PlayerIdentifier>(i)) ) + { + key = qtr( playerIdentifierDictionary[static_cast<PlayerControlbarModel::PlayerIdentifier>(i)] ); + } + else + { + key = metaEnum.key(i); + } + + obj.setProperty("name", key); array.setProperty(i, obj); } diff --git a/modules/gui/qt/player/player_controlbar_model.hpp b/modules/gui/qt/player/player_controlbar_model.hpp index 3bf7e4c08c616bdf65f48148d024422ef3c41064..a6d3b3389e58c17fbfbbbd966f7278d6c8d09adf 100644 --- a/modules/gui/qt/player/player_controlbar_model.hpp +++ b/modules/gui/qt/player/player_controlbar_model.hpp @@ -21,6 +21,8 @@ #include <QObject> #include <QJSValue> +#include <QMap> + #include <array> class ControlListModel; @@ -40,6 +42,9 @@ public: // add its identifier in this enum and set QML buttons layout // identifier to it. Such as `property int identifier = // PlayerControlbarModel.Mainplayer`. + // To make it translatable, add a corresponding entry to + // the static member playerIdentifierDictionary which is + // initalized in the source file. enum PlayerIdentifier { Mainplayer = 0, Miniplayer @@ -51,6 +56,9 @@ public: // Thanks to MOC, adding an entry to this enum // is enough for the editor to consider the // added entry without any other modification. + // (except for the translation) + + static const QMap<PlayerIdentifier, const char*> playerIdentifierDictionary; static QJSValue getPlaylistIdentifierListModel(class QQmlEngine *engine, class QJSEngine *scriptEngine); diff --git a/po/POTFILES.in b/po/POTFILES.in index 2631ce0715d7942f2f94f8b45cc586ad8c4ab24d..3128f9f62a1b36d4cecef82d10b5f42c6561b8a1 100644 --- a/po/POTFILES.in +++ b/po/POTFILES.in @@ -799,6 +799,8 @@ modules/gui/qt/widgets/native/searchlineedit.hpp modules/gui/qt/util/singleton.hpp modules/gui/qt/util/validators.cpp modules/gui/qt/util/validators.hpp +modules/gui/qt/player/player_controlbar_model.cpp +modules/gui/qt/player/player_controlbar_model.hpp modules/gui/qt/dialogs/dialogs/qml/CustomDialog.qml modules/gui/qt/dialogs/dialogs/qml/Dialogs.qml modules/gui/qt/dialogs/dialogs/qml/WindowDialog.qml