Hi,

After some code rewriting for 20.08 release in July, Kdenlive lost its ability 
to have translatable default layout names (see the screenshot attached).

I'm trying to renew this feature with a trivial patch (attached). It does work 
somehow (extracts, translates the button labels and actions, etc.), but breaks 
the button change logic. Can the patch be enhanced by some of the more 
skillful Kdenlive main developers to make the default layout names 
translatable?

Thanks in advance for your help.

Best regards,
Yuri
diff --git a/Messages.sh b/Messages.sh
index a67306354..596ee2f28 100755
--- a/Messages.sh
+++ b/Messages.sh
@@ -4,6 +4,6 @@ kdenlive_subdirs="plugins renderer data src src/ui"
 
 $EXTRACTRC --tag=name --tag=description --tag=label --tag=comment --tag=paramlistdisplay data/transitions/*.xml data/effects/*.xml data/generators/*.xml data/kdenliveeffectscategory.rc >> rc.cpp
 $EXTRACTRC `find $kdenlive_subdirs -name \*.rc -a ! -name encodingprofiles.rc -a ! -name camcorderfilters.rc -a ! -name externalproxies.rc -o -name \*.ui` >> rc.cpp
+sed 's/[0-9]=\(\w.*\)/i18nc("Layout name", "\1");/' data/kdenlivedefaultlayouts.rc >> rc.cpp
 
 $XGETTEXT `find $kdenlive_subdirs -name \*.cpp -o -name \*.h -o -name \*.qml` *.cpp -o $podir/kdenlive.pot
-rm -f rc.cpp
diff --git a/src/layoutmanagement.cpp b/src/layoutmanagement.cpp
index 298a6c227..b556585e6 100644
--- a/src/layoutmanagement.cpp
+++ b/src/layoutmanagement.cpp
@@ -149,9 +149,9 @@ void LayoutManagement::initializeLayouts()
             load->setText(QString());
             load->setIcon(QIcon());
         } else {
-            load->setText(i18n("Layout %1: %2", i, layoutName));
+            load->setText(i18n("Layout %1: %2", i, i18nc("Layout name", layoutName.toUtf8().constData())));
             if (i < 6) {
-                QPushButton *lab = new QPushButton(layoutName, m_container);
+                QPushButton *lab = new QPushButton(i18nc("Layout name", layoutName.toUtf8().constData()), m_container);
                 lab->setFocusPolicy(Qt::NoFocus);
                 lab->setCheckable(true);
                 lab->setFlat(true);
@@ -385,8 +385,8 @@ void LayoutManagement::slotManageLayouts()
     
     // Add layouts to list
     for (const QString &name : qAsConst(names)) {
-        QListWidgetItem *item = new QListWidgetItem(name, &list);
-        item->setData(Qt::UserRole, name);
+        QListWidgetItem *item = new QListWidgetItem(i18nc("Layout name", name.toUtf8().constData()), &list);
+        item->setData(Qt::UserRole, i18nc("Layout name", name.toUtf8().constData()));
         item->setFlags(Qt::ItemIsEditable | Qt::ItemIsEnabled | Qt::ItemIsSelectable);
     }
     int ix = 0;

Reply via email to