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;